[英]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_id
是PK
列, fk_id
是table1
的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.