如何在查询中使用“OR”索引查询?

时间:2014-05-08 14:49:37

标签: sql indexing

如果我有查询

SELECT * FROM tableA where A=10 and (B=20 OR C=30) order by D

通常我会在列上创建一个索引,(A,B,C,D),但我不确定这是不是最好的方法。

此查询的2个索引(A,B,D)和(A,C,D)会不会更好?

由于

FFMG

1 个答案:

答案 0 :(得分:1)

此查询将强制执行完整的表或索引扫描。无法为允许您进行索引搜索的B or C方案编制索引。

你可以做的是构建一个(A, D, include B, C)索引(如果你的数据库支持这个,另一个只构建一个A,D,B,C索引)。然后,您可能只需要索引扫描而不是表扫描,其中索引的顺序已经正确。如果您只使用这些列或仅使用一个或两个其他列来完成查询,尤其如此,该索引可能完全满足查询而无需返回到表中。