我假设下面的第一个调用更有效,因为它只进行一次检查以查看是否@myInputParameter
小于 5000。
如果检查失败,我会完全避免查询。但是,我看到其他人像第二个示例一样编写代码,说它同样有效,甚至更多。
谁能告诉我哪个更快?似乎第二个会慢得多,特别是如果调用是通过大型数据集进行梳理。
第一次调用:
IF (@myInputParameter < 5000)
BEGIN
SELECT
@myCount = COUNT(1)
FROM myTable
WHERE someColumn=@someInputParameter
AND someOtherColumn='Hello'
--and so on
END
第二次调用:
SELECT
@myCount = COUNT(1)
FROM myTable
WHERE someColumn=@someInputParameter
AND someOtherColumn='Hello'
AND @myInputParameter < 5000
--and so on
编辑:我使用的是 SQL Server 2008 R2,但我真的想了解哪个查询是 SQL 的“最佳实践”。我确信这两个语句之间的查询时间差异是千分之一秒,所以它不是那么关键。我只是对编写更好的 SQL 代码感兴趣。谢谢