【发布时间】:2016-02-04 20:24:49
【问题描述】:
请帮助我调整下面提到的更新语句,
UPDATE t_cust
SET cust_name = td.cust_name,
cust_desc = td.cust_desc
FROM t_cust tc
JOIN t_data_cust td ON tc.cust_nr = td.cust_nr
AND tc.start_validity_date = ISNULL(@execution_date,td.start_validity_date)
AND (td.adj_id = @adj_id OR @adj_id IS NULL)
AND ( td.ln_status = '0')
WHERE td.cust_name <> tc.cust_name
OR td.cust_desc <> tc.cust_desc
【问题讨论】:
-
你的问题是什么?你是如何识别查询导致性能问题的?还查询包含一些语法错误
-
请忽略]语法实际上我正在寻找 AND (td.adj_id = (@)adj_id OR (@)adj_id IS NULL) OR 条件我的客户表有数百万条记录并且有触发器以及历史更新
-
更新需要多少时间?执行此查询的持续时间是多少?
-
您可以像这样更改联接 JOIN (select * from t_data_cust where tc.start_validity_date = ISNULL((at)execution_date,d.start_validity_date) AND (td.adj_id = (@)adj_id OR (@ )adj_id IS NULL) AND (td.ln_status = '0') ) td ON tc.cust_nr = td.cust_nr WHERE td.cust_name tc.cust_name OR td.cust_desc tc.cust_desc ---如果你的问题是 OR 条件然后写两个更新一个是第一个或第二个是第二个,但我认为这是更好的方法
-
发布查询计划。更改为选择并确定花费时间的是选择部分还是更新部分
标签: sql-server performance join