5 mysql索引注意事項

2021-10-08 05:59:05 字數 807 閱讀 5102

假設有乙個聯合索引: idx(name,gender)

explain select * from table where name = 『***』;此時會在執行計畫中發現索引會生效.

而explain select * from table where gender = 『***』;此時的聯合索引不會生效.

當我們使用組合索引的第乙個欄位去查詢時,組合索引生效

當我們使用組合索引的第二個字段單獨查詢時,組合索引不會生效.

當我們將組合索引的字段全部加上的時候,不管sql中組合索引欄位的順序 如何,索引都是會生效的.

使用like的時候會導致索引失效 比如說like 『%***%』, 但是like '***%'去除第乙個百分號的時候,索引會生效的

select * from table where name like 『***%』 or id = 『***』;此時如果or的兩邊欄位都加了索引的話,那麼這個語句是會使用索引查詢的,且會同時使用這兩個欄位的索引,

如果or的兩邊有乙個沒有索引的話,那麼這條語句都是不會走索引的。

查詢欄位為null的時候,is null會走索引, = null是不會走索引的。

使用group by的時候 索引失效

order by null會使排序失效,order by預設排序比不排序的時間肯定長的,所以如果想要group by查詢效率高的話,就需要使用order by null;

如果希望order by查詢效率高的話,建議提前使用檢視使用 >= 的時候會全表掃瞄兩次,時間大於 >的方式

10 in 和not in 都會導致索引失效

mysql索引注意事項

在查詢條件中必須有復合索引還中最左側的列 在建立多列索引時,要根據業務需求,where子句中使用最頻繁的一列放在最左邊 假設你在表的state city和zip資料列上建立了復合索引。索引中的資料行按照state city zip次序排列,因此它們也會自動地按照state city和state次序排...

mysql索引注意事項

1.模糊查詢前導不會走索引 select id,user name,price code from user activity info where user name like zhang 如果非要使用前導索引的話可以借助apache的lucence索引工具 2.欄位預設值不要設定成null 如果...

mysql復合索引注意事項

概念 單一索引是指索引列為一列的情況,即新建索引的語句只實施在一列上 使用者可以在多個列上建立索引,這種索引叫做復合索引 組合索引 復合索引在資料庫操作期間所需的開銷更小,可以代替多個單一索引 同時有兩個概念叫做窄索引和寬索引,窄索引是指索引列為1 2列的索引,寬索引也就是索引列超過2列的索引 設計...