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.
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) 上, 那么
以上几种情况都是可以用这个多列索引来加速查询,这就是后半句话的意思。
但是下面这两种情况是无法使用
(last_name, first_name)
索引的,因为多列索引必须是按照左值匹配,按照建索引的字段顺序来才行,这就是前半句话的意思