选择合适的索引列顺序


针对多列索引,如何确定哪一列位于第一列?这就要用到我前面提到的索引的选择性。通常根据经验法则:将选择性最高的列放到索引最前列。

由此引入了一个问题,计算选择性。举个栗子:

select * from payment where staff_id = 2 and customer_id = 268   那么是应该创建一个(staff_id, customer_id)索引,还是应该颠倒顺序呢?我们可以通过以下方法来进行计算和比较,然后得出结论。执行以下sql语句:

select count(DISTINCT staff_id)/count(*) as staff_id_selectivity,count(DISTINCT customer_id)/count(*),count(*)  from payment;  结果如下:

staff_id_selectivity:0.0001

customer_id_selectivity:0.0373

count(*):16049

customer_id的选择性更高,因此应将其放到第一列。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM