T-SQL 中是否有“IN”语句的替代方法?

Md.*_*ain 1 t-sql database sql-server

考虑这个代码片段:

SELECT 
    vbs.SKUID, SKUName, SUM(vbs.Quantity) AS Qty
FROM   
    BatchStocks AS vbs
WHERE  
    vbs.SKUID IN (Here i have almost 12000 SKU)
    AND vbs.StoreID IN (%q)
    AND vbs.StockType = %n
GROUP BY
    vbs.SKUID, vbs.SKUName
Run Code Online (Sandbox Code Playgroud)

在这种where情况下,我有将近 12000 个 SKUID,这需要很多时间来执行语句。你能建议我如何改进这个查询吗?

Squ*_*rel 5

您可以使用 EXISTS()

将 SKU 放在临时表中

WHERE  vbs.SKUID IN (Here i have almost 12000 SKU)
Run Code Online (Sandbox Code Playgroud)

改成

WHERE  EXISTS
       (
           SELECT *
           FROM   #TEMP x
           WHERE  x.SKUID  = vbs.SKUID 
       )
Run Code Online (Sandbox Code Playgroud)