MySQL索引失效的幾種情況小結(jié)
哪些情況導致的索引失效,下面具體來了解一下
1.最左前綴原則
在MySQL數(shù)據(jù)庫中,聯(lián)合索引遵守最左前綴原則,聯(lián)合索引中,在進行數(shù)據(jù)檢索時從索引的最左端開始匹配。聯(lián)合索引有多個列,對于多列索引,查詢過濾條件的字段,必須順序的包含索引中的字段,一旦跳過某個字段,則索引后面的字段就會失效。如果過濾條件中沒有使用聯(lián)合索引中的第一個字段,則這個索引不會被使用到。
#創(chuàng)建聯(lián)合索引 CREATE INDEX idx_name_age_tname ON student(`name`,age,tea_name); #執(zhí)行如下查詢,因為過濾條件中有聯(lián)合索引的name,age因此用到了索引,過濾條件name,age位置不影響,只要出現(xiàn)就可以。 EXPLAIN SELECT id, `name`, age FROM student WHERE `name` = '張三' #15*3+2+1(一個字符占用3字節(jié),15*3,是否為null占1字節(jié),varchar占2字節(jié)) AND age = 23 # 4+1 (一個int占4字節(jié),是否為null占1字節(jié))
2. 計算、函數(shù)使索引失效
在進行查詢的時候,過濾條件的索引進行計算或者函數(shù)時,會導致索引失效。
3. 類型轉(zhuǎn)換導致索引失效
查詢的過濾條件中,字段類型轉(zhuǎn)換(自動/手動),都會使所有失效。
4. 不等于(<>或!=)導致索引失效
查詢的過濾條件中,過濾條件的字段出現(xiàn)不等于,會使索引失效。
5. is not null /is null可能不走索引,也可以走索引
當一張數(shù)據(jù)很多,索引列的null值比較少,有值的比較多,is not null
不走索引,is null走索引。
當一張數(shù)據(jù)很多,索引列的null值比較多,有值的比較少,is not null
走索引,is null不走索引。
6. 模糊匹配Like以%開頭
在使用LIKE關鍵字進行查詢的查詢語句中,如果匹配字符串的第一個字符為’%‘,索引就不會起作用。只有’%'不在第一個位置,索引才會起作用。
7. OR前后的條件列不是索引,導致索引失效
在查詢過濾條件中,OR的前面或者后面的列不是所有,那么導致整個where過濾條件的所有索引失效。OR的前面和后面的列必須是索引列,才能生效。因為OR就是必須前面和后面的條件都滿足,才能是全滿足。
到此這篇關于MySQL索引失效的幾種情況小結(jié)的文章就介紹到這了,更多相關MySQL索引失效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MySQL SELECT同時UPDATE同一張表問題發(fā)生及解決
例如用統(tǒng)計數(shù)據(jù)更新表的字段(此時需要用group子句返回統(tǒng)計值),從某一條記錄的字段update另一條記錄,而不必使用非標準的語句,等等感興趣的朋友可以參考下哈2013-03-03解決MySQL報錯incorrect?datetime?value?'0000-00-00?00:00
這篇文章主要給大家介紹了關于如何解決MySQL報錯incorrect?datetime?value?'0000-00-00?00:00:00'?for?column的相關資料,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下2023-08-08mysql創(chuàng)建的外鍵無法保存的原因以及處理辦法
這篇文章主要介紹了mysql創(chuàng)建的外鍵無法保存的原因以及處理辦法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09mysql 5.7.21 winx64綠色版安裝配置方法圖文教程
這篇文章主要為大家詳細介紹了mysql 5.7.21 winx64綠色版安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-09-09Mysql數(shù)據(jù)庫的日志管理、備份與回復詳細圖文教程
備份的主要目的是災難恢復,備份還可以測試應用、回滾數(shù)據(jù)修改、查詢歷史數(shù)據(jù)、審計等,這篇文章主要給大家介紹了關于Mysql數(shù)據(jù)庫的日志管理、備份與回復的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-08-08IDEA無法連接mysql數(shù)據(jù)庫的6種解決方法大全
這篇文章主要介紹了IDEA無法連接mysql數(shù)據(jù)庫的6種解決方法大全,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11