MySQL高性能的索引策略(二)

MySQL高性能的索引策略(二)

选择合适的索引列顺序只是用于B-Tree索引。

选择合适的索引列顺序

在一个多列的B-Tree索引中,索引列的顺序意味着索引首先按照最左列进行排序,其次是第二列,等等。所以,索引可以按照升序或者降序进行扫描,以满足精确符合列顺序的ORDER BY ,GROUP BY和DISTINCT等子句的查询要求。

对于如何选择索引的列的顺序有一个经验法则:将选择性最高的列放到索引最前列。当不需要考虑排序和分组时,将选择性最高的列放在前面通常是很好的。这时候索引的作用只是用于优化WHERE条件的查找,可以最快的过滤出需要的数据行。但有时我们需要根据那些运行频率最高的查询来调整索引列的顺序。

有如下一个索引(title,shortName);

使用如下sql根据索引的选择性确定列的顺序,

> select count(distinct title) / count(*) as title_selectivity,
count(distinct shortName) / count(*) as short_name_selectivity
from article

******************** 1. row *********************
     title_selectivity: 0.5000
short_name_selectivity: 1.0000
1 rows in set

可以看到title列的索引选择性比shortName的选择性要高。我们可以根据一般的经验法则可以确定title列在前面还是有好处的。但是我们要根据具体的情况作出相应的调整。

=======END=======

你可能感兴趣的:(MySQL高性能的索引策略(二))