有人建议我在t-sql批处理中使用IF语句对性能有害.我正试图找到一些确认或验证这个断言.我正在使用sql Server 2005和2008.
断言是以下批次: –
IF @parameter = 0 BEGIN SELECT ... something END ELSE BEGIN SELECT ... something else END
sql Server无法重用生成的执行计划,因为下次执行可能需要不同的分支.这意味着sql Server将完全从执行计划中删除一个分支,因为对于当前执行,它已经可以确定需要哪个分支.这是真的吗?
此外,在这种情况下会发生什么: –
IF EXISTS (SELECT ....) BEGIN SELECT ... something END ELSE BEGIN SELECT ... something else END
哪里不可能事先确定将执行哪个分支?