本篇內容介紹了“MySQL索引失效是什么情況”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
在我們常規做數據庫開發時,都會為每個表設置適合它的索引來加快數據庫的搜索效率。
但有了索引也不是說就萬事大吉,所有查詢都沒問題。像我們使用
但也可能因為你使用錯誤的SQL語句而無法使用。其中有以下幾種,在使用sql查詢時盡量避免。
select * from user where name <> '張三';
最左側不使用%時也會使用索引(最左匹配),否則不使用索引。
select * from user where name like '%三%';
select * from user where name not in ('張三');
select * from user where name is not null;
select * from user where date(create_time) = '2021-02-03';
查詢條件類型與字段類型不相符時,如下邊例子,字段是字符串類型條件使用數值類型。
select * from user where name > 30;
包括(+、-、*、/)都會導致索引失效
select * from user where age + 2 = 30;
or導致索引失效是在特定情況下,并不是所有的or都會導致索引失效,如果or連接的是一個字段,那么就不會失效,反之索引失效。
select * from user where name = '張三' or age > 30;
即使完全符合索引生效的場景,考慮到實際數據量等原因,最終是否使用索引還要看MySQL優化器的判斷。當然你也可以在sql語句中寫明強制走某個索引。
這種情況概率極低,我也只遇到過一回,確定where條件使用了索引也執行了查詢,但返回的數據結果與實際不相符。未能找到原因,后來只是把這個索引刪除后重建就正常了。
“MySQL索引失效是什么情況”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。