我正在编写一个执行非常简单的搜索查询的页面,结果如下:
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)),它们是否都将用于上述查询中?
答案 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 ...;
您将获得已执行查询的列表,其类型,已使用的索引,等等...