簡體   English   中英

使用某些值排除某些記錄SQL選擇

[英]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.

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