(1)索引面試題分析
所謂索引:就是排好序的快速查找數(shù)據(jù)結構,排序家查找是索引的兩個用途
select * 在where使用到了索引,當select *? 有模糊查詢%在左邊索引會失效?
當select * where后面索引的順序發(fā)生變化,也會用到索引4個?
我們where后面倒著排序,也會使用到索引4個
上面,因為有MySql查詢優(yōu)化器,它會把Msql的命令自動的調整和優(yōu)化,已達到最佳效果
查詢* ,where后面c3>a3,用到了范圍導致索引失效?,用到了3個索引c1 c2 c3,大小93
用到了范圍導致索引失效?,Msql優(yōu)化器話進行優(yōu)化,用到了4個索引c1 c2 c3c4 ,大小124
用到2個索引,大小62,嚴格來說c3也用到了,它沒有用于查找,用于了排序
Extra:出現(xiàn)了Using filesort,因為where后面沒有按照我建立索引的順序使用缺少了c3,用c4去排序,產(chǎn)生了文件內排序,這個是非常影響性能的
用到1個索引:c1,c2c3用到去排序去啦?
出現(xiàn)了文件內排序,因為order by 后面沒有按照建立索引的順序使用
用到2個索引c1c2 查找和排序都是按照順序的
?用到2個索引c1c2 查找和排序都是按照順序的
只要order by 使用的跟建立的順序不一樣們就會產(chǎn)生文件內排序,這個是個例外,因為排序字段已經(jīng)是一個常量了,常量了排序就沒用了,就沒有產(chǎn)生文件內排序,跟下面那個進行對比
用到了group by后按照順序,這里索引用到了一個c1
?用到了group by,這里索引用到了一個c1,但是group by沒有按照索引的順序,多了Using filesort 和Using temporary
?
(2)總結口訣
當中間使用like %(在右邊)也是范圍查詢是具體的范圍查詢,type為range它跟>不一樣,他能使用到like后的索引,用到了3個索引
?當中間使用like %(在左邊)不是具體的范圍,這個type不是range,只用到一個索引c1
?當中間使用like? ?%? ... %(兩個%)不是具體的范圍,這個type不是range,只用到一個索引c1
?當中間使用like %(最左邊有具體的開頭)使用到3個索引
文章來源:http://www.zghlxwxcb.cn/news/detail-691230.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-691230.html
到了這里,關于sql:SQL優(yōu)化知識點記錄(八)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!