相关疑难解决方法(0)

通过添加未使用的WHERE条件来查询运行时间

我遇到了一个有趣的障碍(至少对我有趣).下面是我的查询的一般概念.假设@AuthorType是存储过程的输入,并且每个地方都有各种专门条件我已经发表评论.

SELECT *
FROM TBooks
WHERE
(--...SOME CONDITIONS)
OR
(@AuthorType = 1 AND --...DIFFERENT CONDITIONS)
OR
(@AuthorType = 2 AND --...STILL MORE CONDITIONS)
Run Code Online (Sandbox Code Playgroud)

对我来说有趣的是,如果我使用@AuthorType = 0执行此SP,它的运行速度比删除最后两组条件(为@AuthorType的特殊值添加条件的条件)要慢.

SQL Server不应该在运行时意识到永远不会满足这些条件并完全忽略它们吗?我所经历的差异并不小; 它大约是查询长度的两倍(1-2秒到3-5秒).

我希望SQL Server能够为我做太多优化吗?我是否真的需要为特殊条件设置3个独立的SP?

sql sql-server where-clause

1
推荐指数
1
解决办法
357
查看次数

标签 统计

sql ×1

sql-server ×1

where-clause ×1