那么该如何判断【值的分布】,我们通过一种被geek称之为 【sarg】的方法,具体操作如下:
假如,我们有如下query:
- select * from userresult_f where askid=800808 and uid=110996854;
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): 6
- sum(uid=110996854): 2
- 1 row in set (0.00 sec)
mysql> select sum(askid=800808),sum(uid=110996854) from userresult_f\G;
*************************** 1. row ***************************
sum(askid=800808): 6
sum(uid=110996854): 2
1 row in set (0.00 sec)
依据查询输出,我们应该选择 idx_2
By 数据牧羊人
Good Luck!
2014-4-27 19:05 于福州