首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询中是否在MySql中使用索引?

查询中是否在MySql中使用索引?
EN

Stack Overflow用户
提问于 2014-03-12 06:17:11
回答 2查看 87关注 0票数 0

我有个疑问

代码语言:javascript
复制
SELECT * FROM Table_name WHERE column1 = '1' AND  column2 IN ('1','2','3');

并且索引存在于(column1, column2, column3)上。我的上述查询是否使用了我已经创建的索引?基本上,我对IN关键字感到困惑,如果没有这个关键字,它正在使用,但是对于IN,我不确定。请解释一下。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-12 06:24:40

MySQL能够与IN一起使用索引。现在,MySQL是否在特定查询中使用索引?好吧,去问查询规划师!

在这种情况下,可以使用(column1, column2, ..)之上的索引--因为所有左侧组件都已满足。也就是说,可以在column1 (针对=)和column2 (用于IN)上执行索引查找。但是,询问查询规划师,因为意外的计划并不是闻所未闻的;仅仅因为查询规划者可以选择索引并不意味着它会选择索引。

有关如何问:请参见解释

当解释与可解释语句一起使用时,MySQL将显示来自优化器的有关语句执行计划的信息。也就是说,MySQL解释了它将如何处理该语句,包括有关表如何连接和按什么顺序连接的索引使用等信息。 。。在解释的帮助下,您可以看到应该在哪里向表添加索引,以便通过使用索引查找行来使语句执行得更快。

票数 0
EN

Stack Overflow用户

发布于 2014-03-12 06:23:55

MySQL可以使用带有IN条件的索引。如果您只有column2上的索引,则很可能会使用它。如果您对每个column1column2都有索引,那么只能使用其中一个索引,并且查询计划器必须决定哪个索引对特定的查询更好。如果在(column1, column2)上有一个复合索引,那么它应该能够使用该索引来匹配WHERE子句中的两列。

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

https://stackoverflow.com/questions/22343449

复制
相关文章

相似问题

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