我在包含750 000個條目的表上運行查詢時出現性能問題。它需要15到20秒才能執行,在那段時間阻止訪問數據庫並創建大量錯誤日誌(當然還有憤怒的客戶)。需要幫助來提高某些TSQL「不存在」查詢性能
下面是該查詢:
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個客戶連接。
感謝您的幫助!
這似乎是無用的:'和ts.corr_id = corr_id 和ts.local_group_id = local_group_id 和ts.global_group_id = global_group_id' –
@RBarryYoung哦,THX,我會修改我的神話 –
另一種方法通過使用通用表達式(CTE)來提高性能。 @Tim Schmelter:是的。 – sjkm