首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >索引的顺序重要吗?

问索引的顺序重要吗?
EN

Stack Overflow用户
提问于 2013-10-10 20:28:02
回答 3查看 1.4K关注 0票数 1

假设您有一个表,其中有A和B列。在表上创建多列索引(A,B)。

您的查询是否必须考虑索引的顺序?例如,

代码语言:javascript
复制
select * from MyTable where B=? and A in (?, ?, ?);

在查询中我们将B放在第一位,第二位放在第二位。但指数是(A,B)。命令重要吗?

Update:我确实知道,从最左边的前缀规则来看,索引的顺序非常重要。但是,哪一列在查询本身中排在第一位重要吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-10 20:32:46

在本例中,不是,但我建议使用解释关键字,您将看到MySQL将使用哪些优化(或不使用)。

票数 2
EN

Stack Overflow用户

发布于 2013-10-10 20:37:48

索引中列的顺序会影响MySQL优化器使用索引的方式。具体来说,MySQL可以将复合索引用于A列的查询,因为它是复合索引的第一部分。

但是,您的问题涉及查询中列引用的顺序。在这里,优化器将适当地处理引用,并且顺序并不重要。不同的子句必须按照特定的顺序来满足语法规则,所以无论如何您都没有什么控制权。

多列索引优化的Mysql引用是这里。

票数 2
EN

Stack Overflow用户

发布于 2013-10-10 20:32:20

您可以测试特定的查询,您认为它们是问题,但否则我不会担心这个优化。查询计划很可能会破坏查询的原始形式。也就是说,MySQL应该很好地规划如何使用指数来优化速度。这可能要求条件不同,但我对此表示怀疑。如果MySQL确实需要重新排序优化条件,那么相对于查询的执行而言,这将是一个非常小的代价(至少如果结果集很大)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19305592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档