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