我有这样的查询:
SELECT *
FROM T
WHERE A = @A AND (B=@B OR C=@C OR D=@D OR @E=E)
ORDER BY F
Run Code Online (Sandbox Code Playgroud)
我应该添加哪些索引来提高查询性能?此外,我还需要实现分页,因此这个查询会更复杂.
我的猜测是应该创建四个指数:(A,B,F),(A,C,F),(A,D,F)(A,E,F),但我不确定并且可以'我真的测试它,因为我还没有足够的数据.
有没有人有经验可以分享?谢谢.
索引通常不会帮助您处理这种 OR 逻辑。不知道您获得了多少数据或对象的复杂性,我只能主观地说,但使用联合查询对数据进行排序通常会更快。
SELECT * from T
WHERE a= @a and B= @b
UNION
SELECT * from T
WHERE a= @a and c= @c
UNION
SELECT * from T
WHERE a= @a and d= @d
union
SELECT * from T
WHERE a= @a and e= @e
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
188 次 |
| 最近记录: |