mysql优化 - mysql聚合索引的问题
迷茫
迷茫 2017-04-17 11:44:58
0
1
853

关于mysql聚合索引,这是有段话,一定不是很理解。

If you specify the columns in the right order in the index definition, a single composite index can speed up several kinds of queries on the same table.

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回覆(1)
左手右手慢动作

題主問的問題可能翻譯有誤, 應該是叫做Multiple-Column Indexes多列索引或composite indexes 複合索引。聚合索引應該是叫聚集索引clustered indexes才對,那是另外一種了。

我習慣用多列索引來說, 這句話就是說明建多列索引時, 要考慮各個列的順序。
直接拿官方文件解釋: 假設索引建立在 (last_name, first_name) 上, 那麼

SELECT * FROM test WHERE last_name='Widenius';

SELECT * FROM test
  WHERE last_name='Widenius' AND first_name='Michael';

SELECT * FROM test
  WHERE last_name='Widenius'
  AND (first_name='Michael' OR first_name='Monty');

SELECT * FROM test
  WHERE last_name='Widenius'
  AND first_name >='M' AND first_name < 'N';

以上幾種情況都是可以用這個多列索引來加速查詢,這就是後半句話的意思。
但下面這兩種情況是無法使用(last_name, first_name)索引的,因為多列索引必須是按照左值匹配,按照建索引的字段順序來才行,這就是前半句話的意思

SELECT * FROM test WHERE first_name='Michael';

SELECT * FROM test
  WHERE last_name='Widenius' OR first_name='Michael';
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板