当前位置: 首页 > 知识库问答 >
问题:

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

南门洋
2023-03-14

我有一个有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个答案

夹谷信鸿
2023-03-14

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

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

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

 类似资料:
  • 问题内容: 我面临以下问题,我不确定什么是最佳实践。 考虑下表(该表会变大): id PK | Giver_id FK | FK | 日期 我正在使用InnoDB,据我了解,它会自动为两个外键列创建索引。但是,我还将在需要匹配以下特定组合的情况下进行大量查询: 。 每个这样的组合在表中将是唯一的。 在这些列上添加双列索引有什么好处,还是理论上两个单独的索引足够/相同? 问题答案: 如果您有两个单列

  • 问题内容: varchar列上的索引是否会使查询运行缓慢?我可以将其设为int。而且我不需要做LIKE%比较。 问题答案: varchar列上的索引是否会使查询运行缓慢? 不,不是的。 如果优化器决定使用索引,则查询将运行得更快。 该表上的s / s / s会变慢,但不太可能引起注意。 我不需要做LIKE%比较 请注意,使用: …将 不 使用索引,但以下内容将: 关键是在字符串的左侧使用通配符,这

  • 问题内容: 知道索引列会带来更好的性能,是否值得对数据库所有表中的所有列建立索引?这种方法的优点/缺点是什么? 如果值得的话,有没有一种方法可以在SQL Server中自动创建索引?我的应用程序动态地添加了表和列(取决于用户配置),我希望它们被自动索引。 问题答案: 由于上面提到的原因,很难想象在现实世界中对每列进行索引都是有用的。场景类型将需要一堆不同的查询,所有查询都只访问表的一列。每个查询可

  • 问题内容: 我在MySQL数据库中有下表: SQL将如下所示: 如您所见,我同时创建了primaryId和和imgDate索引键。我的想法是,该WHERE子句使用primaryId,而ORDER子句使用来查询结果imgDate。 我的问题是,现在使用多索引会更好吗?还是我应该使用多列索引(目前我不太了解)? 这是我从EXPLAIN得到的: 注意:这不是使用多列索引,这是使用上表说明的结果。 问题答

  • 本文向大家介绍MySQL索引使用说明(单列索引和多列索引),包括了MySQL索引使用说明(单列索引和多列索引)的使用技巧和注意事项,需要的朋友参考一下 1. 单列索引 在性能优化过程中,选择在哪些列上创建索引是最重要的步骤之一。可以考虑使用索引的主要有两种类型的列:在Where子句中出现的列,在join子句中出现的列。请看下面这个查询: 这个查询与前面的查询略有不同,但仍属于简单查询。由于age是

  • 我正在阅读Al Sweigart的书《自动化无聊的东西》,我对我遇到的索引错误感到不知所措。我正在使用PyPDF2尝试打开一个加密的PDF文档。我知道这本书是2015年的,所以我去了文档,看看我是否遗漏了什么,一切似乎都一样,至少据我所知。所以我不确定这里出了什么问题。 给予: 在问我的问题之前,我在谷歌上搜索了一下,找到了这个带有“建议修复”的链接。然而,我对这一点很陌生,想看看解决方法是什么。