簡體   English   中英

關系表 SQL 查詢優化/性能問題?

[英]Relational Table SQL Query Optimization/Performance Issue?

我有如下查詢優化問題。

我有兩個相關的表。

Commodity (This table has 75 Thousand records)
  CommodityID (PK)
  CommodityName

CommoditySupplier  (This table has approx 800 Million records)
  CommoditySupplierID (PK)
  SupplierID (FK)
  CommodityID (FK)

我正在執行以下查詢以列出具有 CommodityName 'SearchString' 的供應商 ID

SELECT SuppllierID
FROM CommoditySupplier 
WHERE CommodityID IN (SELECT CommodityID FROM Commodity WHERE CommodityName Like '%SearchString%')

問題是,它非常慢。 執行時間超過 30-40 分鍾。 有時甚至不止於此。 請指導我優化查詢。 或者我應該以某種方式改變結構嗎? 提前致謝。

通常JOINEXISTS更快:

SELECT cs.SuppllierID
FROM CommoditySupplier cs
WHERE EXISTS (SELECT 1
              FROM Commodity c
              WHERE c.CommodityID = cs.CommodityId AND
                    c.CommodityName Like '%SearchString%'
             );

出於性能考慮,您需要一個關於Commodity(CommodityID, CommodityName)的索引。

由於使用通配符進行搜索,這可能仍然沒有很好的性能。 如果您可以使用=IN ,請使用其中一種結構而不是LIKE 否則,您可能需要考慮全文索引。

暫無
暫無

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

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