一条查询语句非常慢,但在 SQL Server里不到1秒

小灰狼 2009-09-03 10:29:08
表结构:
Material (IdNo 字符串(50), Name 字符串(100), ......)


Select Top 25 *
From Material
Where
IdNo Not In (
Select Top 100 IdNo From Material Order By IdNo Asc
)
Order By IdNo Asc

数据量是3万多条,不到4万
把数据导到SQL Server中后,不到1秒就查询完毕
但 Access 用了半个小时还没完

...全文
90 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灰狼 2009-09-04
  • 打赏
  • 举报
回复
晕死

当页码为1时,用 select top 0 的子查询会出错
  • 打赏
  • 举报
回复
4万条数据,我可不敢用 IN(),会死的。
WWWWA 2009-09-03
  • 打赏
  • 举报
回复
Select Top 25 *
From Material a
left join
(
Select Top 100 IdNo From Material Order By IdNo Asc
) b
on a.IdNo=b.IdNo
where b.IdNo is null
Order By a.IdNo Asc

在IdNo上建立索引
小灰狼 2009-09-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wwwwb 的回复:]
IN、TOP都是慢的查询,改成
LEFT JOIN+WHERE应该快一些
[/Quote]


那要怎么改?
我这里做一个网页的翻页!
wwwwb 2009-09-03
  • 打赏
  • 举报
回复
IN、TOP都是慢的查询,改成
LEFT JOIN+WHERE应该快一些
ewang11 2009-09-03
  • 打赏
  • 举报
回复
数据量大,在ACCESS运行NOT IN 会慢得出奇
改成LEFT JOIN 至少快N倍
WWWWA 2009-09-03
  • 打赏
  • 举报
回复
呵呵,ACCESS与SQLSERVER的价格相差多少?
一个是桌面数据库,一个是服务型数据库,功能相差太多。
ACMAIN_CHM 2009-09-03
  • 打赏
  • 举报
回复
ACCESS的引擎与SQL SERVER不可同日而语。

不过你的语句改成 left join where is null 试试。

7,712

社区成员

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

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