溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL索引失效是什么情況

發布時間:2021-07-06 18:30:38 來源:億速云 閱讀:123 作者:chen 欄目:編程語言

本篇內容介紹了“MySQL索引失效是什么情況”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

在我們常規做數據庫開發時,都會為每個表設置適合它的索引來加快數據庫的搜索效率。

但有了索引也不是說就萬事大吉,所有查詢都沒問題。像我們使用

但也可能因為你使用錯誤的SQL語句而無法使用。其中有以下幾種,在使用sql查詢時盡量避免。

使用!=或<>導致索引失效
select * from user where name <> '張三';
使用模糊查詢的索引失效

最左側不使用%時也會使用索引(最左匹配),否則不使用索引。

select * from user where name like '%三%';
使用not in 或 not exists的索引失效
select * from user where name not in ('張三');
使用is null 或 is not null 的索引失效
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都會導致索引失效,如果or連接的是一個字段,那么就不會失效,反之索引失效。

select * from user where name = '張三' or age > 30;
MySQL查詢優化器最終選擇不走索引

即使完全符合索引生效的場景,考慮到實際數據量等原因,最終是否使用索引還要看MySQL優化器的判斷。當然你也可以在sql語句中寫明強制走某個索引。

索引本身失效

這種情況概率極低,我也只遇到過一回,確定where條件使用了索引也執行了查詢,但返回的數據結果與實際不相符。未能找到原因,后來只是把這個索引刪除后重建就正常了。

“MySQL索引失效是什么情況”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女