Mysql多列索引建立與優化.md
轉載自:https://www.jianshu.com/p/c964a5e04adb
對於單列索引,沒有太多的話題,但是對於多列索引的建立,一個好的多列索引能使用的場景應可以涵蓋很多,減少其他不必要的索引空間,就有很多事情需要注意。
索引的物理結構
http://www.jianshu.com/p/1775b4ff123a
1. where 子句中的多列索引
如果表有多個列索引,可以使用任何左邊的字首索引的優化器來查詢。例如, 有一個三列的索引(col1、col2 col3), 有索引搜尋功能(col1),(col1,col2),(col1、col2、col3)。
1.1 可以完全使用該索引的優化的情況
1)where中條件只有col1等於常量; 查詢可以用到索引。
2)where中條件只有col1為範圍(>,<,>=,<=);查詢可以用到索引。
3)where中條件有col1,col2,且col1等於常量,col2等於常量;可以用到索引。
4)where中條件有col1,col2,且col1等於常量,col2等於範圍;可以用到索引。
5)where中條件有col1,col2,col3,且col1,col2,col3均等於常量;可以用到索引。
6)where中條件有col1,col2,col3,且col1,col2均等於常量,col3為範圍;可以用到索引。
1.2 可以部分使用該索引的優化的情況
1)where中條件col1等於常量,無col2,col3的常量或範圍,只能用到col1的索引;
2)where中條件col1等於常量,col2的範圍,col3的常量或範圍,只能用到col1、col2的索引;
3)where中條件col1的範圍,col2、col3的常量或範圍,只能用到col1的索引;
1.3 不能使用該索引的優化的情況
下列情況均需要掃描所有行再進行篩選,因為多列索引的第一列沒有在條件中。
1)col2 常量或範圍;
2)col3 常量或範圍;
3)col2、col3 常量或範圍;
相關文章
- MySQL索引與查詢優化MySql索引優化
- MySQL索引優化MySql索引優化
- mysql優化索引MySql優化索引
- 淺談MySQL的B樹索引與索引優化MySql索引優化
- Mysql索引優化(一)MySql索引優化
- 效能調優-Mysql索引資料結構詳解與索引優化MySql索引資料結構優化
- MySQL調優之索引優化MySql索引優化
- MySQL 筆記 - 索引優化MySql筆記索引優化
- MySQL——索引優化實戰MySql索引優化
- MySQL 字串索引優化方案MySql字串索引優化
- MySQL 索引原理以及優化MySql索引優化
- MySQL優化之索引解析MySql優化索引
- mysql索引原理及優化MySql索引優化
- Mysql索引的建立與刪除MySql索引
- Mysql索引優化之索引的分類MySql索引優化
- mysql索引的使用和優化MySql索引優化
- MySQL 索引使用策略及優化MySql索引優化
- mysql優化篇(基於索引)MySql優化索引
- MySQL函式索引及優化MySql函式索引優化
- MySQL-效能優化-索引和查詢優化MySql優化索引
- mysql建立字首索引MySql索引
- MySQL 效能優化——B+Tree 索引MySql優化索引
- MySQL-索引優化全攻略MySql索引優化
- 「MySQL」高效能索引優化策略MySql索引優化
- MySQL 索引優化 Using where, Using filesortMySql索引優化
- MySQL效能優化之索引設計MySql優化索引
- mysql索引優化和TCP協議MySql索引優化TCP協議
- MongoDB索引與優化詳解MongoDB索引優化
- MySQL 生成列索引MySql索引
- 【MySQL】MySQL的執行計劃及索引優化MySql索引優化
- 聯合索引和多個單列索引使用中的索引命中情況及索引建立原則索引
- MySQL優化學習筆記之索引MySql優化筆記索引
- 【MySQL】三、效能優化之 覆蓋索引MySql優化索引
- MySQL優化之覆蓋索引的使用MySql優化索引
- Mysql效能優化:如何給字串加索引?MySql優化字串索引
- MySQL 索引及查詢優化總結MySql索引優化
- MySQL索引建立原則MySql索引
- 《MySQL慢查詢優化》之SQL語句及索引優化MySql優化索引