索引失效的场景(面试)
生活随笔
收集整理的這篇文章主要介紹了
索引失效的场景(面试)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.where條件中有or關(guān)鍵字
-- 創(chuàng)建組合索引 CREATE INDEX idx_name ON student(NAME,age); -- 查詢 SELECT COUNT(*) FROM student WHERE NAME='jack666'; -- 命中索引 SELECT COUNT(*) FROM student WHERE NAME='jack666' and age=666; -- 命中索引 SELECT COUNT(*) FROM student WHERE NAME='jack666' or age=666; -- 沒有命中索引,索引失效2.組合索引未用左列字段
組合索引 idx_name(name,address,phone)
等同于 idx_name(name) ;idx_name(name,address); idx_name(name,address,phone)
name phone不算
-- 創(chuàng)建組合索引,如果存在就不用創(chuàng)建 CREATE INDEX idx_name ON student(name,address,phone); -- 查詢 SELECT COUNT(*) FROM student WHERE address=666; -- 沒有命中索引,索引失效 SELECT COUNT(*) FROM student WHERE phone=123; -- 沒有命中索引,索引失效 SELECT COUNT(*) FROM student WHERE name='張三' AND phone ='12312'; -- 沒有命中索引,索引失效3.where條件like以占位符(_或%)開頭
-- 查詢,前提是name列有索引 SELECT COUNT(*) FROM student WHERE NAME LIKE 'jack66%'; -- 命中索引 SELECT COUNT(*) FROM student WHERE NAME LIKE '%666'; -- 沒有命中索引,索引失效4.where中索引列有運算
SELECT * FROM student WHERE id=6788; -- 命中索引 SELECT * FROM student WHERE id+1=6789; -- 沒有命中索引,索引失效5.where中索引列使用了函數(shù)【不單獨指聚合函數(shù)】
SELECT COUNT(*) FROM student WHERE CONCAT(NAME,'66')='jack666'; -- 沒有命中索引,索引失效補充:什么情況下不推薦使用索引?
比如性別,只有兩種可能數(shù)據(jù)。意味著索引的二叉樹級別少,多是平級。這樣的二叉樹查找無異于全表掃描。
比如logincount登錄次數(shù),頻繁變化導致索引也頻繁變化,增大數(shù)據(jù)庫工作量,降低效率。
只有在where語句出現(xiàn),mysql才會去使用索引
4) where 子句里對索引列使用不等于(<>),使用索引效果一般
總結(jié)
以上是生活随笔為你收集整理的索引失效的场景(面试)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 夏普电脑显示器黑屏(夏普电脑显示器黑屏怎
- 下一篇: 铭萱电脑主板质量怎么样(铭瑄主板有哪些型