Is IN查询是否在MySql中使用索引



我有一个类似

的查询
SELECT * FROM Table_name WHERE column1 = '1' AND  column2 IN ('1','2','3');

且索引在(column1, column2, column3)上存在。我上面的查询是否使用了我创建的索引?基本上我与IN关键字混淆,没有这个,它正在使用,但与IN我不确定。

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

MySQL 能够使用索引与IN ..现在, MySQL使用索引在特定的查询?那么,询问查询规划器!

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

参见EXPLAIN,如何提问:

当EXPLAIN与一个可解释的语句一起使用时,MySQL显示来自优化器的关于语句执行计划的信息。也就是说,MySQL解释了它将如何处理语句,包括关于表如何连接以及以何种顺序连接的信息[如索引使用].

. .在EXPLAIN的帮助下,您可以看到应该在表中添加索引,以便通过使用索引查找行来加快语句的执行速度。

相关内容

  • 没有找到相关文章

最新更新