我在对包含 750 000 个条目的表运行查询时遇到性能问题。执行需要 15 到 20 秒,在此期间阻止访问数据库并创建大量错误日志(当然还有愤怒的客户)。
这是查询:
DECLARE @FROM_ID AS UNIQUEIDENTIFIER = 'XXX'
DECLARE @TO_ID AS UNIQUEIDENTIFIER = 'YYY'
update tbl_share
set user_id = @TO_ID
where user_id = @FROM_ID
and not exists (
select *
from tbl_share ts
where ts.file_id = file_id
and ts.user_id = @TO_ID
and ts.corr_id = corr_id
and ts.local_group_id = local_group_id
and ts.global_group_id = global_group_id
)
由于我的 TSQL 知识有限,我现在有点卡住了。我想知道是否:
- 我应该创建一个临时表
- 我应该选择“*”以外的其他内容
我没有很多机会运行测试,因为它是一个生产数据库,并且每天有 10-20 个客户永久连接。
谢谢你的帮助!