linux select读取节点数据失败_MySQL中覆盖索引查询和select*查询执行结果案例分析...
索引優(yōu)化建議
在MySQL中要盡可能使用覆蓋索引進(jìn)行檢索,只訪問索引的查詢(索引列和查詢列一致),減少select * 可提高查詢效率
覆蓋索引(Covering Index)
就是select的數(shù)據(jù)列只用從索引中就能夠取得,不必讀取數(shù)據(jù)行,MySQL可以利用索引返回select列表中的字段,而不必根據(jù)索引再次讀取數(shù)據(jù)文件,換句話說查詢列要被所建的索引覆蓋。
索引是高效找到行的一個(gè)方法,但是一般數(shù)據(jù)庫也能使用索引找到一個(gè)列的數(shù)據(jù),因此它不必讀取整個(gè)行。畢竟索引葉子節(jié)點(diǎn)存儲(chǔ)了它們索引的數(shù)據(jù);當(dāng)能通過讀取索引就可以得到想要的數(shù)據(jù),那就不需要讀取行了。一個(gè)索引包含了(或覆蓋了)滿足查詢結(jié)果的數(shù)據(jù)就叫做覆蓋索引。
注意:
如果要使用覆蓋索引,一定要注意select列表中只取出需要的列,不可select *,
因?yàn)槿绻麑⑺凶侄我黄鹱鏊饕龝?huì)導(dǎo)致索引文件過大,查詢性能下降。
案例對(duì)比
結(jié)果:我們發(fā)現(xiàn)select * 查詢執(zhí)行結(jié)果的Extra是NULL
結(jié)果:我們發(fā)現(xiàn)select * 查詢執(zhí)行結(jié)果的Extra是Using index
案例結(jié)論對(duì)比分析
注意:Using index:表示直接訪問索引就足夠獲取到所需要的數(shù)據(jù),不需要通過索引回表,所以Extra的執(zhí)行效率排序是Using index最快
using index :使用覆蓋索引的時(shí)候就會(huì)出現(xiàn)
using where:在查找使用索引的情況下,需要回表去查詢所需的數(shù)據(jù)
using index condition(mysql5.6以后才出來的新特性):會(huì)先條件過濾索引,過濾完索引后找到所有符合索引條件的數(shù)據(jù)行,隨后用 WHERE 子句中的其他條件去過濾這些數(shù)據(jù)行,查找使用了索引,但是需要回表查詢數(shù)據(jù)。
using index & using where:查找使用了索引,但是需要的數(shù)據(jù)都在索引列中能找到,所以不需要回表查詢數(shù)據(jù)
排序:using index > using index & using where > using index condition > using index
案例1、案例2結(jié)論對(duì)比分析:當(dāng)我們使用了索引列查詢,效率要高于select *
點(diǎn)擊關(guān)注發(fā)私信或評(píng)論交流文章中有問題的地方,相互學(xué)習(xí)和答疑
總結(jié)
以上是生活随笔為你收集整理的linux select读取节点数据失败_MySQL中覆盖索引查询和select*查询执行结果案例分析...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何成为一个佛系互联网大佬如何成为一个佛
- 下一篇: lnmp无法远程连接mysql_MySQ