以下sql在access中太慢了,怎么改好?

lhy 2011-11-16 10:29:21
速度太慢怎么改才能快一些?

select col0,col1,col2 from table1
where col0 in
(select Min(col0) from table1
Group by col1) order by col1
...全文
70 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhy 2011-11-16
  • 打赏
  • 举报
回复
好的,谢谢,结贴给分。
ACMAIN_CHM 2011-11-16
  • 打赏
  • 举报
回复
ACCESS 中SQL语句优化并不好,对于IN,它的效率不如JOIN。
lhy 2011-11-16
  • 打赏
  • 举报
回复
我是想知道为什么1楼的比我的SQL快很多,连2楼的都快一些。
wwwwb 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lhylhy 的回复:]
引用 5 楼 acmain_chm 的回复:
楼主的语句想实现的逻辑是什么?

就是table1里面数据根据col1排序,如果col1相同的,只取col0最小的。
[/Quote]
1、2楼均可
lhy 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 acmain_chm 的回复:]
楼主的语句想实现的逻辑是什么?
[/Quote]
就是table1里面数据根据col1排序,如果col1相同的,只取col0最小的。
wwwwb 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lhylhy 的回复:]
col0是键值。
果然快很多,谢谢了。
楼上能讲讲是什么原理吗?
[/Quote]
建立索引的目的就是加快查询,查找时通过索引,不用全表扫描
ACMAIN_CHM 2011-11-16
  • 打赏
  • 举报
回复
楼主的语句想实现的逻辑是什么?
ACMAIN_CHM 2011-11-16
  • 打赏
  • 举报
回复
select a.*
from table1 a inner join (select col1, Min(col0) as m from table1 Group by col1) b
on a.col1=b.col1 and col0=b.m
order by a.col1
lhy 2011-11-16
  • 打赏
  • 举报
回复
col0是键值。
果然快很多,谢谢了。
楼上能讲讲是什么原理吗?
wwwwb 2011-11-16
  • 打赏
  • 举报
回复
or
select col0,col1,col2 from table1 where not exists
(select 1 from table1 where a.col1=col1 and a.col0>col0)
wwwwb 2011-11-16
  • 打赏
  • 举报
回复
在col0上建立索引
select col0,col1,col2 from table1 a
inner join (select Min(col0) as mi from table1
Group by col1) b
on a.col0=b.mi order by col1

7,714

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧