首页 > 解决方案 > T-SQL 中是否有“IN”语句的替代方案?

问题描述

考虑这个代码片段:

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

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

标签: sql-serverdatabasetsql

解决方案


您可以使用EXISTS()

将 SKU 放在临时表中

WHERE  vbs.SKUID IN (Here i have almost 12000 SKU)

改成

WHERE  EXISTS
       (
           SELECT *
           FROM   #TEMP x
           WHERE  x.SKUID  = vbs.SKUID 
       )

推荐阅读