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(2):索引與優化MySql索引優化
- 瞭解MySQL-索引與優化MySql索引優化
- MySQL索引優化MySql索引優化
- mysql優化索引MySql優化索引
- 淺談MySQL的B樹索引與索引優化MySql索引優化
- MySQL 效能優化之索引優化MySql優化索引
- Mysql索引優化(一)MySql索引優化
- MySQL 5.7 索引優化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優化索引
- sql優化之多列索引的使用SQL優化索引
- 「MySQL」高效能索引優化策略MySql索引優化
- MySQL 效能優化——B+Tree 索引MySql優化索引
- MySQL-索引優化全攻略MySql索引優化
- mysql索引優化和TCP協議MySql索引優化TCP協議
- MySQL效能優化之索引設計MySql優化索引
- mysql 語句的索引和優化MySql索引優化
- mysql索引覆蓋掃描優化MySql索引優化
- MySQL SQL 優化之覆蓋索引MySql優化索引
- MYSQL索引優化思維導圖MySql索引優化
- 【MySQL】效能優化之 覆蓋索引MySql優化索引
- MongoDB索引與優化詳解MongoDB索引優化
- mysql建立字首索引MySql索引