设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2079|回复: 6
打印 上一主题 下一主题

[查询] 查询速度很慢的问题

[复制链接]
跳转到指定楼层
1#
发表于 2010-8-4 13:42:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
见附件,有两表

表control_no含字段control_no

表tblsalereport也包含字段control_no



我建了两个查询,query2是将这两表control_no字段合并的查询

query1是从合并的数据中选取最小的不重复值

但是运行query1速度很慢,请帮忙看看可以怎么改进,谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2010-8-4 15:37:28 | 只看该作者
以联合查询为基础,可以这样搞法:

SELECT TOP 1 First(a.control_no) AS 最小记录
FROM [SELECT Query2.control_no, Count(Query2.control_no) AS 计数 FROM Query2 GROUP BY Query2.control_no]. AS a
GROUP BY a.计数
ORDER BY a.计数;


从本题来看,以下查询更为合理:

SELECT TOP 1 a.Control_No
FROM Control_No AS a LEFT JOIN tblSaleReport AS b ON a.Control_No=b.Control_No
WHERE (((b.MAWB_NBR) Is Null));
3#
 楼主| 发表于 2010-8-4 16:44:10 | 只看该作者
谢谢楼上的高人,能大概解释下意思不?因为最近工作中可能还需要用到类似语句,我刚刚用help看了,但还是很不明白
谢谢
4#
发表于 2010-8-4 17:18:42 | 只看该作者
本帖最后由 todaynew 于 2010-8-4 17:19 编辑
谢谢楼上的高人,能大概解释下意思不?因为最近工作中可能还需要用到类似语句,我刚刚用help看了,但还是很 ...
yimu 发表于 2010-8-4 16:44


1、第一个查询的思路是先做一个计数的分组查询,然后对这个计数的分组查询再按照计数进行分组并排序,最后取第一条记录就是你需要的“最小的不重复值”。

2、第二个查询的思路是联接两表,取字段较多,记录较少的某个字段作为判断基础,取值为空的部分是不重复的部分,取该部分的第一条记录也就是你需要的“最小的不重复值”。

除这两个查询外,还应该存在其他的求解方法,只要算法正确同时考虑查询效率,均可得到答案。也就是所谓条条道路通罗马。



5#
 楼主| 发表于 2010-8-4 17:50:51 | 只看该作者
谢谢!有点小明白了。
那么还有更复杂的情况,如果我有三个表
control_no含有字段control_no
salereport1含有字段control_no(不是必填字段,可能为空值)
salereport2含有字段control_no(不是必填字段,可能为空值)
我要从表control_no中选出既不在salereport1,又不在salereport2里出现过的最小值
这个时候要怎么用left join语句呢?
非常感谢您的帮忙!


见附件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
6#
发表于 2010-8-4 17:58:44 | 只看该作者
本帖最后由 todaynew 于 2010-8-4 18:01 编辑

原理一样,在多几个也没关系,呵呵。
SELECT TOP 1 Control_No.Control_No
FROM (Control_No LEFT JOIN salereport2 ON Control_No.Control_No=salereport2.Control_No) LEFT JOIN SaleReport1 ON Control_No.Control_No=SaleReport1.Control_No
WHERE (((salereport2.MAWB_NBR) Is Null) AND ((SaleReport1.MAWB_NBR) Is Null));


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
7#
 楼主| 发表于 2010-8-4 18:26:03 | 只看该作者
这个问题我解决了,我把salereport1和salereport2联合查询就可以了。谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-9-27 04:24 , Processed in 0.080126 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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