mysql b-tree 索引下联合索引的顺序测试方案
使用联合索引需要注意的列顺序
比如在使用
select * from user where x=1 and y=2;
的时候,应该需要建立的索引可能是 add key(x,y)
如何确定索引的顺序
一般经验而言
可以使用
select count(distinct x)/count(x) as x_selectivity,
count(distinct y)/count(y) as x_selectivity,
count(*),
from user;
************************row1***************************
x_selectivity: 0.0001
y_selectivity: 0.0312
count(*) : 16022
在x中的选择性越高,所以可以放在第一列
alert table user add key(x,y);
另外可以在历史的慢查询中找到类似的进行优化
比如
select * from user where x=1 and y=2;
select sum(x=1),sum(y=2) from user\G;
******************row1**********************************
sum(x=1): 7992
sum(y=2): 30
y的选择性会更高一些,可以放在第一列
然后看看y=2 对应的x列的选择性
select sum(x=1) from user where y=2
******************row1**********************************
sum(x=1): 17
但是有可能mysql存在查询不公平的情况,服务器的整体性能可能更糟糕,,所以需要提取一下最差的查询进行这项的查询工作
这类工作被某些优化极客geek称为sarg。这是“可搜索参数(searchable argument)”的缩写。
最新文章
- 在SQL Server里我们为什么需要意向锁(Intent Locks)?
- 使用sencha cmd 一键生成你的应用程序代码
- windows Server 2008各版本区别详解
- FileUpload控件使用初步
- 蓝桥杯 algo_5 最短路 (bellman,SPFA)
- Part 89 to 91 Talking about pass the parameters in thread
- apache开启.htaccess及.htaccess的使用方法
- iOS开发之获取WIFI信号强度
- V微软S2015下载:开展Win10/Linux/iOS多平台软件
- 纯JSP实现用户登录注册,记事本
- oracle EM 如何调整界面显示的语言
- 手把手教你发布一个Python包
- iPhone手机屏幕尺寸(分辨率)
- 安装PHP ImageMagick笔记
- AS 中 Plugin for Gradle 和 Gradle 之间的版本对应关系
- 《学习OpenCV3》第6章课后习题
- linux:帮助命令help、man、info
- 机器学习【算法】:KNN近邻
- P1564 膜拜
- Web前端应该从哪些方面来优化网站