我們?cè)谑褂胠ike 通配符有下面三種用法,其中第1和第2的用法會(huì)引起索引失效的問題。這是因?yàn)镸ySQL的索引是按照從左到右的順序進(jìn)行匹配的,而前導(dǎo)通配符(比如%abc)會(huì)導(dǎo)致無(wú)法按照索引順序進(jìn)行匹配。
1、like '%name'?? ——> 失效
2、like '%name%'? ——> 失效
3、like 'name%'
現(xiàn)在來說下解決方案:
1. 為需要進(jìn)行模糊查詢的name字段增加一個(gè)聯(lián)合索引,比如name 和 age
?2.? Select 后面查詢的字段必須要帶上 name 和 age, 這樣的查詢就是覆蓋索引查詢
?3.用關(guān)鍵字Explain, 可以看到我們的模糊查詢sql是有用上索引的
?
覆蓋索引定義:MySQL 執(zhí)行計(jì)劃 explain 結(jié)果里的 key 有使用索引,如果 select 后面查詢的字段都可以從這個(gè)索引的樹中獲取,這種情況一般可以說是用到了覆蓋索引,extra 里一般都有 using index;覆蓋索引一般針對(duì)的是輔助索引,整個(gè)査詢結(jié)果只通過輔助索引就能拿到結(jié)果,不需要通過輔助索引樹找到主鍵,再通過主鍵去主鍵索引樹里獲取其它字段值。文章來源:http://www.zghlxwxcb.cn/news/detail-500653.html
1.覆蓋索引是一種數(shù)據(jù)查詢方式,不是索引類型
2.在索引數(shù)據(jù)結(jié)構(gòu)中,通過索引值可以直接找到要查詢字段的值,而不需要通過主鍵值回表查詢,那么就叫覆蓋索引
3.查詢的字段被使用到的索引樹全部覆蓋到文章來源地址http://www.zghlxwxcb.cn/news/detail-500653.html
到了這里,關(guān)于like模糊查詢導(dǎo)致索引失效的解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!