什么是覆盖索引?如何利用覆盖索引进行SQL语句优化?
生活随笔
收集整理的這篇文章主要介紹了
什么是覆盖索引?如何利用覆盖索引进行SQL语句优化?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如果你不知道什么是覆蓋索引,那么SQL性能優化便無從談起!
什么是覆蓋索引?如何利用索引進行SQL語句優化?
表結構
150多萬的數據,這么一個簡單的語句:
慢查詢日志里居然很多用了1秒的,Explain的結果是:
從Explain的結果可以看出,查詢已經使用了索引,但為什么還這么慢?
分析:首先,該語句ORDER BY 使用了Using filesort文件排序,查詢效率低;其次,查詢字段不在索引上,沒有使用覆蓋索引,需要通過索引回表查詢;也有數據分布的原因。
知道了原因,那么問題就好解決了。
解決方案:由于只需查詢uid字段,添加一個聯合索引便可以避免回表和文件排序,利用覆蓋索引提升查詢速度,同時利用索引完成排序。
覆蓋索引:SQL只需要通過索引就可以返回查詢所需要的數據,而不必通過二級索引查到主鍵之后再去查詢數據。
我們再Explain看一次:
Extra信息已經有'Using Index',表示已經使用了覆蓋索引。經過索引優化之后,線上的查詢基本不超過0.001秒。
總結
以上是生活随笔為你收集整理的什么是覆盖索引?如何利用覆盖索引进行SQL语句优化?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 两性位置
- 下一篇: 如何赋值hook定义的变量