ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2224|回复: 7

[求助] Access的查询速度优化问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-7-29 23:44 | 显示全部楼层 |阅读模式
在其他论坛问了下,没有答案,来咱家试试,虽然咱家主业是excel

202007292050056407.jpg


三个表的结构
需要查询表1的700条商品编码的价格、区域1、库存等信息,


第一种语句,耗时10分钟左右


SELECT 表1.商品编码, 商品表.品名, 商品表.价格, 商品表.区域1, 库存表.库存
FROM 库存表 INNER JOIN (表1 INNER JOIN 商品表 ON 表1.商品编码 = 商品表.商品编码) ON 库存表.商品编码 = 商品表.商品编码
WHERE (((库存表.部门)="A"));




第二种语句,耗时1秒

SELECT 商品表.商品编码, 商品表.品名, 商品表.价格, 商品表.区域1, 库存表.库存
FROM 库存表 INNER JOIN 商品表 ON 库存表.商品编码 = 商品表.商品编码
WHERE (((商品表.商品编码) In ("6132478412","6243158791","6412351265",.....写完表1的700条商品编码)) AND ((库存表.部门)="A"));


第二种快,但是查询条件要写完700条编码不现实,第一种直接连接三个表查询,但是速度太慢,请问如何优化

有网友答
SELECT 商品表.商品编码, 商品表.品名, 商品表.价格, 商品表.区域1, 库存表.库存
FROM 库存表 INNER JOIN 商品表 ON 库存表.商品编码 = 商品表.商品编码
WHERE (((商品表.商品编码) In (select 商品编码 from 表1)) AND ((库存表.部门)="A"));

试了下不行,还是慢,近10分钟
查询条件用这个 (商品表.商品编码) In ("6132478412","6243158791","6412351265",.....写完表1的700条商品编码)  就是秒出结果

TA的精华主题

TA的得分主题

发表于 2020-7-30 08:43 | 显示全部楼层
用left join 试试。


select d.商品编码,部门,库存,品名,价格,区域1 from (select a.商品编码,部门,库存 from [表1$] a left join [库存表$] b on a.商品编码=b.商品编码) d left join [商品表$] c on d.商品编码=c.商品编码


TA的精华主题

TA的得分主题

发表于 2020-7-30 08:55 | 显示全部楼层
上边忘了加部门过滤条件了。
这个补上了。

select d.商品编码,部门,库存,品名,价格,区域1 from (select a.商品编码,部门,库存 from [表1$] a left join [库存表$] b on a.商品编码=b.商品编码 where b.部门='a' ) d left join [商品表$] c on d.商品编码=c.商品编码

TA的精华主题

TA的得分主题

发表于 2020-7-30 09:03 | 显示全部楼层
用excel模拟了一个800行的查询,你刷新看看,瞬间出结果。

多表查询速度优化.rar (407.2 KB, 下载次数: 16)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-8-13 18:12 | 显示全部楼层
guojianlin1985 发表于 2020-7-30 09:03
用excel模拟了一个800行的查询,你刷新看看,瞬间出结果。

测试.rar (151.29 KB, 下载次数: 2)

谢谢,但是好像不行

TA的精华主题

TA的得分主题

发表于 2020-8-19 15:03 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2021-7-17 22:54 来自手机 | 显示全部楼层
几十万数据查几百条数据,而且逻辑并不复杂,正常耗时都是在毫秒级别的。但是你这个,既然用到access数据库了,为何还用链接表。看你截图应该还是链接到Excel的,这样没法设置主键没法设置索引,再优化速度都是提不上来的。

TA的精华主题

TA的得分主题

发表于 2021-7-20 15:50 | 显示全部楼层
SELECT 商品表.商品编码, 商品表.品名, 商品表.价格, 商品表.区域1, 库存表.库存
FROM 库存表 INNER JOIN 商品表 ON 库存表.商品编码 = 商品表.商品编码
WHERE (((商品表.商品编码) In (select 商品编码 from 表1)) AND ((库存表.部门)="A"))
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-3-29 10:02 , Processed in 0.051141 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表