VB+ACCESS翻页代码效率问题

cqzd 2010-04-05 04:03:26
我使用的一个控件,本身不支持分页功能,我需要每次从数据库里取出20条记录,显示在控件上
我用以下的SQL语句进行分页,在1000记录的时候,速度很快,当记录达到5000以上,就变慢了.
我用的一个垂直滚动条,进行翻页,用户可能会点住滚动条不松手,这样就会大概1秒左右 才能显示出来,有卡住的感觉.

SELECT TOP 20 *
FROM (SELECT TOP 20 *
FROM (SELECT TOP 11776 *
FROM T_INFO
WHERE (SHI IN ('大庆'))
ORDER BY ID) a
ORDER BY ID DESC) b
ORDER BY RQ DESC, ID DESC
...全文
101 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2010-04-05
  • 打赏
  • 举报
回复
SELECT TOP 20 *
FROM (SELECT TOP 20 *
FROM (SELECT TOP 11776 *
FROM T_INFO
WHERE (SHI IN ('大庆'))
ORDER BY ID) a
ORDER BY ID DESC) b
ORDER BY RQ DESC, ID DESC


这种多次TOP的语句,ACCESS不会使用索引,所以效率很低。
cqzd 2010-04-05
  • 打赏
  • 举报
回复
顶上去
cqzd 2010-04-05
  • 打赏
  • 举报
回复
发现子查询的记录多少,直接影响到速度.
而不是 最外层的 top 20 决定速度.

如果 子查询 里 top 100 时, 速度就快, top 10000时, 就慢了.
cqzd 2010-04-05
  • 打赏
  • 举报
回复
两层 top 20 确实没有用.

SELECT TOP 20 * FROM (SELECT TOP 11847 * FROM T_INFO WHERE (SHI='大庆') ORDER BY ID) a order by rq desc,id desc

id是主键,有索引
记录10000左右,速度还是慢
xuggzu 2010-04-05
  • 打赏
  • 举报
回复
1、sql语句写的很奇怪,top 20嵌套top 20有何用意?意义?
2、据lz所述,感觉问题更多出在vb代码上而不是sql上。

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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