提问者:小点点

索引列的顺序(我有一个6列索引)会影响速度吗?


我有一个有600万行的表,我需要查找六列来选择项目。所以我创建了一个包含六列的索引。

更改索引中列的顺序是否影响查询速度?

查询的速度是否取决于每列所具有的唯一项的数量?或者列上的条件具有的可能结果的总数?

我尝试重新排序索引中的列,查询速度似乎有一些重大变化

表:pic_tag_relations

列:

  • tag_id(int)(1-1,000,000)(基数:最低)
  • contrast_score(float)(0-24)
  • quality_score(float)(0-10)
  • pic_ratio_type(tinyint)(0/1/2)
  • IS_OKY(tinyint)(0/1)
  • already_used_count(整数)(1-10)

查询:

select*from pic_tag_relations,其中tag_id in($all_tag_ids)&&contrast_score>2.5&quality_score>3&is_okay=1&pic_ratio_type='2'&already_used_count<10


共1个答案

匿名用户

索引中列的顺序影响可以使用的查询。如果条件都是相等的,那么排序就没什么区别了。

首先使用具有大量值的键和具有少量值的键之间可能有很小的区别。但是,我不会担心当索引被最佳地使用时性能的不同。

更重要的是,索引中的列的相等条件是第一列(无论顺序如何),这样索引就可以有效地使用。