[英]SqL Query performance issue
下面的查询似乎需要大约20秒的时间来执行,并且由于它在单个事务中运行了多次,因此严重影响了性能。
[update table1
set column3 = 'new_str'
where column1||','||column2 in
(select table1.column1||','||column2
from table1
join table2 on table1.column1 = table2.column1
where table2.column4 = 'value4'
and table1.column2 = 'value2'
and column3 = 'old_str')]
表格1
column1-char(12)-主键
column2-char(30)-主键
column3-字符(25)
表2
column1-char(12)-主键(表1中的外键)
列4-字符(12)
上面的表具有大约1009578和1082555记录。
无法测试,但我认为根据计算字段分解该标准应该可以大大加快更新速度。 像这样的东西(可能缺少一些东西)应该更好地工作:
[update table1
set column3 = 'new_str'
where column1 in
(select table1.column1
from table1
where table1.column2 = 'value2'
and column3 = 'old_str')
and
column2 in
(select table2.column2
from table2
where table2.column1 = column1
and table2.column4 = 'value4')
]
我认为您正在对Table1进行不必要的查询。 尝试这个:
update table1 t1
set column3 = 'new_str'
where EXISTS
(select *
from table2 t2
where
t1.column1 = t2.column1 -- this is your link from t1 to t2
and t2.column4 = 'value4'
and t1.column2 = 'value2'
and t2.column3 = 'old_str'
)
我想IN
原因在这里不是必需的:
update table1
set column3 = 'new_str'
from table1 join table2 on table1.column1 = table2.column1
where table2.column4 = 'value4'
and table1.column2 = 'value2'
and table1.column3 = 'old_str'
给我们写解决方案最快;]!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.