84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
关于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.
业精于勤,荒于嬉;行成于思,毁于随。
题主问的问题可能翻译有误, 应该是叫做Multiple-Column Indexes多列索引或composite indexes 复合索引。聚合索引应该是叫聚集索引clustered indexes才对,那是另外一种了。
Multiple-Column Indexes
composite 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)索引的,因为多列索引必须是按照左值匹配,按照建索引的字段顺序来才行,这就是前半句话的意思
(last_name, first_name)
SELECT * FROM test WHERE first_name='Michael'; SELECT * FROM test WHERE last_name='Widenius' OR first_name='Michael';
我习惯用多列索引来说, 这句话就是说明建多列索引时, 要考虑各个列的顺序。
直接拿官方文档解释: 假设索引建立在 (last_name, first_name) 上, 那么
以上几种情况都是可以用这个多列索引来加速查询,这就是后半句话的意思。
但是下面这两种情况是无法使用
(last_name, first_name)
索引的,因为多列索引必须是按照左值匹配,按照建索引的字段顺序来才行,这就是前半句话的意思