复合索引的列顺序判断
来源:互联网 发布:淘宝带金字 编辑:程序博客网 时间:2024/06/02 13:31
复合索引最令人困惑的当属索引列的顺序,不仅依赖于使用该索引的查询,更需考虑排序和分组。
前段时候我发了个帖子:where条件顺序和复合索引字段顺序。感兴趣的朋友不妨参与讨论。
今天我提个自己的观点。
在应用开发阶段,【选择性】是我们首要考虑因素,请看简图:
当出现sql性能问题时,你可能需要注意以下几个:
1. 随机IO
2. 排序(order by)
3. 分组(group by or distinct)
这时不必也不应该在关注【选择性】
我的经验便是,在你手上已经有Top N SQL时,我们应该优先考虑【值的分布】,而不是选择性。
那么该如何判断【值的分布】,我们通过一种被geek称之为 【sarg】的方法,具体操作如下:
假如,我们有如下query:
select * from userresult_f where askid=800808 and uid=110996854;
则有2个索引可供选择:
1. idx_1 (askid,uid)
2. idx_2 (uid,askid)
是1 还是2 ?
利用【sarg】方法:
mysql> select sum(askid=800808),sum(uid=110996854) from userresult_f\G;*************************** 1. row ***************************sum(askid=800808): 6sum(uid=110996854): 21 row in set (0.00 sec)
依据查询输出,我们应该选择 idx_2
By 数据牧羊人
Good Luck!
2014-4-27 19:05 于福州
3 0
- 复合索引的列顺序判断
- MySQL中复合索引中列的顺序对性能的影响
- mysql(三)复合索引中列的顺序怎么选择提供性能
- 复合索引的前导列如何选择?
- 复合索引顺序
- 什么复合索引前导列?
- 复合索引与其前导列
- 什么复合索引前导列?
- Pandas如何将Series的复合索引提取为列?
- 复合索引顺序选择问题
- MySQL之索引:索引字段使用顺序对复合索引有效性的影响
- 有效使用索引+索引列上所使用的操作符+避免对唯一索引列使用null+选择复合索引主列
- 使用索引的误区之一:没有使用复合索引的前导列导致查询不使用索引
- 使用索引的误区之一:没有使用复合索引的前导列导致查询不使用索引
- 使用索引的误区之一:没有使用复合索引的前导列导致查询不使用索引
- 使用索引的误区之一:没有使用复合索引的前导列导致查询不使用索引——oracle
- 使用索引的误区之一:没有使用复合索引的前导列导致查询不使用索引
- [精华] 复合索引branch block上存储几个列的信息 [复制链接]
- 项目总结
- Windows下新版cocos2dx-v3.0如何创建项目
- 2013项目总结
- 扩大你的插件
- Service 与 Thread 的区别
- 复合索引的列顺序判断
- 插件提示
- 记今日ACM校赛
- 项目总结1
- java 多线程基础知识2---同步机制
- 项目总结2
- 在CentOS/RHEL 6.5上安装Chromium 谷歌浏览器
- Huffman编码与解码的实现
- 深入理解计算机系统 家庭作业 2.92