首页 新闻 会员 周边 捐助

如何高效率的倒序遍历Mysql数据库里的记录?

0
悬赏园豆:10 [已解决问题] 解决于 2008-09-02 15:33
现在我有个mysql数据库,一个表有好几千万条记录,没有主键,没有索引,试图用java链接后按照插入记录的先后顺序倒序遍历数据库,自然想到要用 select * from tablename limit totalRecNum - i, 1 <BR>但是,刚开始的20多条记录速度还可以,以后就很慢了,我直接在控制台查询,看到首次执行一个查询时要用将近3 seconds,我的天哪,那要等到什么年月啊。 <BR>请教各位高手,有没有什么高效率的办法。
问题补充: mysql 好像没有top 关键字吧
chzhcpu的主页 chzhcpu | 初学一级 | 园豆:120
提问于:2008-08-25 21:00
< >
分享
最佳答案
0
方法一: 分组检索,既然20条时可以,那就每20条作一组。 方法二: 建立存储过程,存储过程是在创建的时候就编译了,查询的时候能够有效提高数据库的速度
MushRoom_lb | 菜鸟二级 |园豆:275 | 2008-08-26 10:33
其他回答(4)
0
先建立索引吧 如果你不能一次处理完 就先建立索引 你不建立索引 一开始可能还比较快 到后面会越来越慢的 数据库的极限是百万 如果到了千万查询时间就不是以秒为单位了 不过你这个库也是够强的 居然让他有几千万也不分表=。= 你才看3秒就。。。 其实百万数量级的时候如果没索引 查询也能上分钟的
小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2008-08-25 23:53
0
没有主键,没有索引,不知道有没有插入时间的字段,如果有的话,可以在这个字段上建立索引,然后 select * from tablename order by createtime desc limit 1,100 每次取100条记录,处理完了取下100条记录。
玉开 | 园豆:8822 (大侠五级) | 2008-08-26 08:34
0
2个top原理。。。 DECLARE @T table(id int identity,col1,col2) INSERT INTO @T select * from table SELECT TOP 页大小 * FROM @T WHERE id NOT IN ( SELECT TOP 页大小*(页数-1) id FROM @T ORDER BY id ) ORDER BY id
roboth | 园豆:28 (初学一级) | 2008-08-26 09:28
0
建立个索引吧,再就分一下表,数据量太大,好象会有点麻烦...
有所为,有所不为 | 园豆:1200 (小虾三级) | 2008-08-26 10:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册