如何避免索引失效

2021-09-13 19:02:13 字數 520 閱讀 4139

全值匹配

最佳左字首法則(如果索引了多列,要遵守最左字首法則。指得時查詢從索引的最左前列開始並且不跳過索引中的列

不在索引列上左任何操作(計算、函式、(自動or手動)型別轉換)。

因為在索引列上做操作會導致索引失效而轉向全表掃瞄

儲存引擎不能使用索引中範圍條件右邊的列

盡量使用覆蓋索引(只訪問索引的查詢(索引列和查詢列一致)),減少select *

mysql 在使用不等於(!= 或者 <>)的時候無法使用索引會導致全表掃瞄

is null, is not null 也無法使用索引(關鍵字段最好也弄個預設值,比如-1或者其他xx,盡量不要設空值)

like 以萬用字元開頭(』%abc…』) mysql索引會失效程式設計全表掃瞄的操作

所以盡量把%寫右邊

如果一定要在兩邊寫% %,則可以使用覆蓋索引。

字串不加單引號會導致索引失效(因為違反了第3條)

少用or,用它來連線時會索引失效

避免索引失效

1.全值匹配,對索引中所有列都指定具體值。2.最左字首法則,如果索引有多列,要遵循最左字首法則。指的是查詢從索引的最左前列開始,並且不跳過索引中的列。否者不走索引。3.範圍查詢右邊的列,不走索引,應為mysql底層範圍查詢之後結構就斷了,就無法使用後面得索引了。4.不要在索引列上進行運算操作,索引將...

怎麼避免索引失效

首先在接著 之前,我們先說一下,如何判斷資料庫的索引是否生效!相信大家應該猜到了,就是explain!explain顯示了mysql如何使用索引來處理select語句以及連線表。他可以幫助選擇更好的索引和寫出更優化的查詢語句。例如我們有一張表user,為name列建立索引name index,如下所...

這樣寫sql避免索引失效

合理地對資料表加索引可以大大加快資料的訪問效率,但索引也不是對任何查詢都有效,如果sql的結構不當,也會發生索引失效。所以為避免採坑,寫下此文,作為記錄。下面的例子是在mysql中建立的一張表,建表語句如下 create table user info id bigint 32 not null,n...