索引在哪些情況下會失效?

2021-10-19 13:17:38 字數 863 閱讀 3893

1、如果條件中有or,即使其中有條件帶索引也不會使用(這也是為什麼盡量少用or的原因)

注意:要想使用or,又想讓索引生效,只能將or條件中的每個列都加上索引

2、3.like查詢是以%開頭,可以是%結束,例如 name like 『張%』,這種情況索引不會失效。

3、如果列型別是字串,那一定要在條件中將資料使用引號引用起來,否則不使用索引。

4、在mysql使用不等於(,!=)的時候無法使用索引,會導致索引失效。

5、is null或者is not null 也會導致無法使用索引。

6、不在索引列上做任何操作(計算,函式,(自動或者手動)型別裝換),會導致索引失效而導致全表掃瞄。

什麼情況下不推薦使用索引?

1、資料唯一性差(乙個欄位的取值只有幾種時)的字段不要使用索引

比如性別,只有兩種可能資料。意味著索引的二叉樹級別少,多是平級。這樣的二叉樹查詢無異於全表掃瞄。

2、 頻繁更新的字段不要使用索引

比如logincount登入次數,頻繁變化導致索引也頻繁變化,增大資料庫工作量,降低效率。

3、欄位不在where語句出現時不要新增索引,如果where後含is null /is not null/ like 『%輸入符%』等條件,不建議使用索引

只有在where語句出現,mysql才會去使用索引

4、where 子句裡對索引列使用不等於(<>),使用索引效果一般

我們可以用explain來分析sql語句使用的索引情況,其中key就是顯示我們使用的索引情況。詳細請閱讀: mysql explain詳解.

哪些情況下索引會失效?

索引並不是時時都會生效的,比如以下幾種情況,將導致索引失效 如果條件中有or,即使其中有條件帶索引也不會使用 這也是為什麼盡量少用or的原因 注意 要想使用or,又想讓索引生效,只能將or條件中的每個列都加上索引 2.對於多列索引,不是使用的第一部分,則不會使用索引 3.like查詢是以 開頭 4....

哪些情況下索引會失效?

索引並不是時時都會生效的,比如以下幾種情況,將導致索引失效 如果條件中有or,即使其中有條件帶索引也不會使用 這也是為什麼盡量少用or的原因 注意 要想使用or,又想讓索引生效,只能將or條件中的每個列都加上索引 2.對於多列索引,不是使用的第一部分,則不會使用索引 3.like查詢是以 開頭 4....

哪些情況下索引會失效?

索引並不是時時都會生效的,比如以下幾種情況,將導致索引失效 如果條件中有or,即使其中有條件帶索引也不會使用 這也是為什麼盡量少用or的原因 注意 要想使用or,又想讓索引生效,只能將or條件中的每個列都加上索引 2.對於多列索引,不是使用的第一部分,則不會使用索引 3.like查詢是以 開頭 4....