【发布时间】:2020-05-23 06:42:26
【问题描述】:
我有一条 SQL 语句将记录从一个表复制到另一个:
INSERT INTO [deletedItems] (
[id],
[shopId])
SELECT
[id],
[shopId]
FROM [items]
WHERE shopId = @ShopId
@ShopId 是从我的应用程序代码调用数据库时提供给 sql 命令的参数。
如果我将其更改为直接使用提供的参数,是否会使语句执行得更好,因此 SQL 服务器不必在投影中包含 products 表中的 shopId 列?
INSERT INTO [deletedItems](
[id],
[shopId])
SELECT
[id],
@ShopId
FROM [items]
WHERE shopId = @ShopId
直觉告诉我是的,但同时,我希望 sql server 优化第一个查询的执行计划并忽略shopId 列的投影(因为对于所有记录)并改用一个常量值。
【问题讨论】:
-
我们不使用直觉来知道哪个“更好”。我们需要定义“更好”的含义以及您打算如何衡量它。对于性能问题,答案总是一样的。两种方式都做,然后比较执行计划。
标签: sql sql-server tsql join insert