[英]Exclude Certain Records with Certain Values SQL Select
我已經從下面的線程中使用了解決方案(由AdaTheDev進行處理),因為它涉及到相同的問題: 如何在sql select中排除具有某些值的記錄
但是,將相同的查詢應用於40,000多個記錄時,查詢將花費很長時間來處理(> 30分鍾)。 還有另一種方法可以有效地查詢具有某些值的某些記錄(與上述stackoverflow線程相同的問題)。 我試圖在下面使用它,但仍然沒有運氣:
SELECT StoreId
FROM sc
WHERE StoreId NOT IN (
SELECT StoreId
FROM StoreClients
Where ClientId=5
);
謝謝 -
您可以使用EXISTS
:
SELECT StoreId
FROM sc
WHERE NOT EXISTS (
SELECT 1
FROM StoreClients cl
WHERE sc.StoreId = cl.StoreId
AND cl.ClientId = 5
)
確保在StoreId
列上創建索引。 您的查詢也可以從ClientId
上的索引中受益。
40,000行對於SQL Server來說不是太大。 另一個線程也建議一些好的查詢。 如果我理解正確,那么您現在的問題就是性能。 為了提高性能,您可能需要向表中添加新索引,或者僅更新表中的統計信息。
如果要在SQL Server Management Studio中運行此查詢以進行測試和性能調整,請確保選擇“包括實際執行計划”。 這將使查詢花費更長的時間來執行,但是執行計划的結果可以幫助您節省時間。 通常建議添加一些索引以提高性能,這很容易遵循。 如果無法添加新索引,則您必須花一些時間閱讀如何理解執行計划的圖並查找慢速區域。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.