簡體   English   中英

性能優化-MS SQL Delete查詢,NOT IN無效

[英]Performance optimisation for - MS SQL Delete query with NOT IN caluse

我有以下SQL查詢,並且需要很長時間才能完成。 我想檢查是否可以使用其他查詢來獲得相同的結果,但同時也可以提高性能。

Delete from table1 WHERE fk_id = '1234' AND pk_id NOT IN ('aaaa', 'bbbb', 'cccc');

注意: pk_idPK列, fk_idtable1的FK。

我對查詢沒有任何建議,這很基本。

但您可能想嘗試添加索引:

ALTER TABLE table1 ADD INDEX (fk_id);

使用您提供的數據,因為您使用了“ AND”條件,所以查詢似乎沒有問題。 現在,您需要考慮和分析數據庫,為什么您的查詢要花費這么多時間。 因此,您可能需要檢查以下內容。

1)選擇計數(1)
來自表1
其中fk_id ='1234'和pk_id NOT IN('aaaa','bbbb','cccc')
這將為您提供要刪除的行數。

2)嘗試類似
選擇
T.name AS表名,O.name觸發器名
從sysobjects O
內部聯接系統表T ON T.object_id = O.parent_obj
O.type ='TR'和T.name ='table1'

這將告訴您與表關聯的觸發器。

3)您需要進一步研究索引的表屬性,以及那里存在的任何約束。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM