sql 优化更新和 select 查询

sql optimize update and select queries

我有相同的 sql 脚本:

....

update table_1 set atrDate_1 = date_1
where atr_1 = param_1
and atr_2 <= param_2
and atr_3 > param_3
and ...

select * from table_1
where atr_1 = param_1
and atr_2 <= param_2
and atr_3 > param_3
and ...
....

在这个脚本中我有两个查询。如何查看这些查询中的条件是否相等。

我的业务规则要求按照我向您展示的顺序执行这些查询。但是我认为这个查询不是最优的,因为我需要在查询中使用等于条件。

您知道如何优化我的查询吗?

谢谢。

您不需要第二个 select 语句而是在 update

中使用 Output 语句
UPDATE table_1
SET    atrDate_1 = date_1
output inserted.*
WHERE  atr_1 = param_1
       AND atr_2 <= param_2
       AND atr_3 > param_3 
       .....

您可以创建一个临时 table,其中包含 table 的主键列。

然后您可以将此临时 table 用作过滤器,这可能比多次应用过滤器谓词更快。

SELECT
  id
INTO #ids
FROM table_1
WHERE
      atr_1 =  param_1
  AND atr_2 <= param_2
  AND atr_3 >  param_3
  AND ...

UPDATE
  t1
SET 
  atrDate_1 = date_1
FROM #ids    tmp
JOIN table_1 t1  ON id = tmp.id

SELECT
  t1.*
FROM #ids    tmp
JOIN table_1 t1  ON id = tmp.id