mysql查詢using,怎么判斷sql語(yǔ)句沒(méi)走索引?
我這里以mysql為例,可視化工具使用的Navicat。
可以在查詢的sql前面增加explain命令,以此可以查看到sql的運(yùn)行狀態(tài)
explain select * from person where edu ='博士';
下方的控制臺(tái)主要關(guān)注兩個(gè)欄,type和extra
當(dāng)extra出現(xiàn)Using filesort和Using temproary這兩個(gè)時(shí),表示無(wú)法使用索引,必須盡快做優(yōu)化。
當(dāng)type出現(xiàn)index和all時(shí),表示走的是全表掃描沒(méi)有走索引,效率低下,這時(shí)需要對(duì)sql進(jìn)行調(diào)優(yōu)。
當(dāng)type出現(xiàn)ref或者index時(shí),表示走的是索引,index是標(biāo)準(zhǔn)不重復(fù)的索引,ref表示雖然使用了索引,但是索引列中有重復(fù)的值,但是就算有重復(fù)值,也只是在重復(fù)值的范圍內(nèi)小范圍掃描,不造成重大的性能影響。