sql - 更快的 SQL 语句 - 目前有一个缓慢的子查询 JOIN 会更快吗?
问题描述
我有一个带有子查询的 SQL 语句。由于添加了子查询,现在执行语句需要大约 10 倍的时间。我一直在阅读 JOIN 可能会更快,但我并不完全精通 SQL 以知道如何实现 JOIN 语句,或者 JOIN 甚至可以用于我的问题。
我当前的 SQL 语句,在 IIF 语句中带有子查询。
SELECT Brand,
DESCRIPTION AS Model,
SECONDDESCRIPTION AS Description,
PRODUCT AS [Product Code],
TYPE AS [Batch Type],
INACTIVE, CORE AS [Core Range],
BATCH,
IIF(t.BATCH =
(SELECT TOP 1 t2.BATCH
FROM INVXLS AS t2
WHERE t2.TYPE = ''
AND t2.PRODUCT = t.PRODUCT),
t.ON_HAND - t.CUSTORD, t.ON_HAND) AS SOH
FROM INVXLS as t
解释子查询在做什么有点罗嗦,所以如果需要更多解释,请发表评论。
我在 VB.NET 中工作,并访问一个 MS ACCESS 数据库。
有没有办法将其切换为 JOIN 语句,如果是这样,该 JOIN 语句会是什么样子?
解决方案
不使用SELECT TOP
anORDER BY
是危险的。但这不是你的问题。
为了性能,您需要一个索引INVXLS(PRODUCT, TYPE, BATCH)
:
CREATE INDEX IDX_INVXLS_PRODUCT_TYPE_BATCH ON INVXLS(PRODUCT, TYPE, BATCH);
推荐阅读
- excel - 提高循环速度
- javascript - 在 src 更改时,即使 src 无效
- html - 退出悬停后下拉菜单消失
- kubernetes - 删除应用 Helm2.13.1 创建的所有 Pod
- r - ggplot geom_bar 按组为 0 值留下空格
- sql - 使用分析函数时的分组
- python - 捕获图像并提交给kivy python中的其他功能
- javascript - select2(药盒)和引导主题的问题
- javascript - Javascript Modules SyntaxError:不能在模块外使用 import 语句
- jupyter-lab - Ipywidget“选择”不会触发鼠标选择回调