sql-server - 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 需要很长时间才能执行语句。你能建议我如何改进这个查询吗?
解决方案
您可以使用EXISTS()
将 SKU 放在临时表中
和
WHERE vbs.SKUID IN (Here i have almost 12000 SKU)
改成
WHERE EXISTS
(
SELECT *
FROM #TEMP x
WHERE x.SKUID = vbs.SKUID
)
推荐阅读
- android - CMake 构建失败,因为找不到 STL 库
- oracle-apex - 有没有办法记录旧的 APEX 应用程序
- apache-spark - 基于相同 ID 合并 pyspark 数据帧行
- excel - 是否有用于检查另一个 Excel 文件是否正在主动保存的 Excel VBA 功能?
- r - R 用空格分隔邮政编码和位置名称
- gremlin - 基于另一个顶点属性更新
- node.js - 如何保存图像以在“fs.createReadStream”中使用?
- kubernetes - 在 kubernetes 上的 traefik 中忽略了后端服务端口
- python - 如何在 Python 中获取 UTC 时间戳
- android - 如何在 Android 中通过 Intent 打开 Pdf 查看器