【发布时间】:2015-04-14 20:25:25
【问题描述】:
我希望在生产数据库中提高我们其中一个流程的性能。我们有 2 组 SP,它们通过存储在配置表中的配置设置。
一个示例语法是:
Declare @SWITCH BIT
IF @SWITCH = 1
INSERT INTO DEST_TABLE_A
SELECT VALUES
FROM SOURCE_TABLE
IF @SWITCH = 2
INSERT INTO DEST_TABLE_B
SELECT VALUES
FROM SOURCE_TABLE
在这种情况下,将 IF 逻辑移动到 WHERE 子句中以创建标准化而不是其中包含条件的逻辑会更好吗?
例如
INSERT INTO DEST_TABLE_A
SELECT VALUES
FROM SOURCE_TABLE
WHERE @SWITCH = 1
INSERT INTO DEST_TABLE_B
SELECT VALUES
FROM SOURCE_TABLE
WHERE @SWITCH = 2
我很欣赏这可能是一篇观点文章,但我很好奇是否有其他人有过这种情况的经验。
【问题讨论】:
-
IMO,IF 语句(我将其写为 IF/ELSE)会更好,因为这样只会进行 1 个
INSERT INTO调用,而您的第二个示例将执行 2 个INSERT INTO调用,即使没有插入任何内容。像第二个例子一样写出来对我来说也没有意义,因为@SWITCH一次只能设置为 1 个值,因此实际上只会使用一个插入语句。
标签: sql-server-2012 sql-server-2014 query-performance