sql优化更新并选择查询

时间:2015-01-23 10:42:13

标签: sql advantage-database-server

我有相同的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 ...
....

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

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

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

感谢。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

您不需要使用第二个select语句,而是使用Output中的update语句

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 
       .....
相关问题