Mysql索引查詢失效的情況
一:不在索引上使用函數,計算等
見圖一,在kq_time上增加了一個索引

我們使用date()函數進行查詢,見圖二

圖二根據kq_time字段查詢并沒有使用索引,我們可以根據kq_time換一種寫法,他就可以走索引了,見圖三

查詢條件是一樣的,圖三的寫法就走索引了.
二:盡量少使用!=,<>,這樣可能是導致全表掃描
我在person_name上建立了一個索引,見圖四

圖五根據person_name='張三'使用了索引

圖六根據person_name!='張三'就沒有使用了索引

圖六!=導致了全表掃描,<>,也會導致全表掃描,我這里就不演示了
三:is null和is not null也無法使用索引

person_name已經建立了索引,然而并沒有走索引
四:like關鍵字 ,以為%開頭,也會導致索引失效,導致全表掃描,見圖八

五:少用in跟or,可能會導致索引失敗.見圖九

六:范圍查詢包括表中大部分數據,也會導致索引失效,見圖十

浙公網安備 33010602011771號