实际使用了多少个索引?

时间:2010-05-27 05:51:54

标签: mysql indexing

我正在编写一个执行非常简单的搜索查询的页面,结果如下:

SELECT * FROM my_table WHERE A in (a1, a2, a3) AND B in (b1, b2) AND C in (c1, c2, c3, c4) AND

等等可变数量的列,通常为~5。如果我为每列创建一个单独的索引(一个用于A,一个用于B,一个用于C,而不是(A,B,C)),它们是否都将用于上述查询中?

2 个答案:

答案 0 :(得分:3)

优化器将尝试使用Index Merge操作并使用三个索引。

在它之前执行带有EXPLAIN的语句,以查看它可以使用的索引,并将使用。考虑FORCE INDEX并查看它是否有所作为。

EXPLAIN SELECT * FROM my_table WHERE A in (a1, a2, a3) AND B in (b1, b2) AND C in (c1, c2, c3, c4) AND

答案 1 :(得分:0)

检查一下:

EXPLAIN SELECT * FROM ...;

您将获得已执行查询的列表,其类型,已使用的索引,等等...