mysql优化 - mysql聚合索引的问题
迷茫
迷茫 2017-04-17 11:44:58
[MySQL讨论组]

关于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)
ringa_lee

题主问的问题可能翻译有误, 应该是叫做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';
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号