Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

Dlookup速度慢,问题出在哪里?

baiqingrui  发表于:2020-04-14 09:57:15  
复制

1.我有一张表A(销售的流水账)信息包括:ID编码,销售日期,商品名称


2.在表A基础上做一个查询B(计算每个月每种商品销售数量):销售年份,销售月份,商品名称,销售数量


3.在查询B基础上,计算上月销售数量和去年同月销售数量,查询C:销售年份,销售月份,商品名称,本月销售数量,上月销售数量,去年同月销售数量

计算上月销售数量,去年同月销售数量时用到了dlookup()函数,例如上月销售数量为:

    DLookUp("[上月销售数量]","查询B","商品名称='" & [疾病名称] & "' and 销售年份=" & IIf([销售年份]=1,[销售年份]-1,[销售年份]) & " and 销售月份=" & IIf([销售月份]=1,[销售月份]+11,[销售月份]-1)),0) AS上月销售数量


4.以上计算发现问题是速度极慢,如果表A原始数据超过10万,就不行了。


5.我自己想了解决办法,我把查询B的结果生成一张表B',在B'基础上去做查询查询C,则不会有速度的问题。


6.最后,我的问题:请问大神,这个问题出在哪里,是Dlookup效率低吗?为什按照第5条做法就速度就快了呢?

 

Top
张志 发表于:2020-04-16 00:07:14

你是多个表建立了一个查询,当然慢了。

然后你生成了一个表,当然快了。

要知道,你生成表,也需要时间的。



benhum 发表于:2020-04-17 08:03:16

域聚合函数运算效率本来就慢。

一般超过1000条记录,我宁愿自定义函数解决。



林剑 发表于:2020-04-19 10:57:52
就是写模块吗

总记录:3篇  页次:1/1 9 1 :