type
status
date
slug
summary
tags
category
icon
password
當查詢想要透過
index
優化時,需要遵循最左前綴的原則,意即若有 index(A,B)
,查詢條件只有 A = ?
和 A = ? AND B = ?
才能吃到這個 index
, B = ?
的條件則無法利用到這個 index
從 MySQL 8.0.13 開始新增了一個優化,讓某些情況下 B = ? 的條件可以透過這個 index 優化
實現方式:1. 在索引前綴(f1) scan 出 distinct 值2. 對其餘索引欄位(f2),建構subrange scan簡單來說,就是會將其轉化為多個子範圍掃描,以此範例有點類似以下查詢:
主要限制:
1. 必須是複合索引,EX:KEY(A,B,C)
2. 只使用了一張表
3. 不能有 group by 和 select distinct
4. 不能回表,意即 query 中的select、where 只有使用該 index(含pk) 的欄位
參考: