如果放入中间表的话, SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ...” 查出的记录也很多怎么办?比如 如果查出100w条,是不是同样每次next都会同样慢??还有好像如果查出的结果少于10w的话,即使点击“last” 也不会很慢,
1、尽量不要查询所有的列; select col1,col2,col3,... from tablename 2、别做那么多嵌套; select col1,col2,col3,... from tablename where rownum between 20 and 41; 3、管理好索引。
to feng2: 1.rownum 不能用between,只能用< 2.楼主方法是对的。
看看Google的分页,Google做不到的楼主就省省心吧
一般来说子查询返回rowid的方式要更快一些。基本框架如下: select a.* from table_name a where rowid in ( select rid from ( select rowid as rid,rownum as rn from table_name where ... and rownum<&ceil_number) where rn>&floor_number);
楼主试一下这个吧: db.executeQuery("select * from (select * from (select rownum record_id,a.* from 表名 a) b ) c where rownum <= "+rowsPerPage+" and c.record_id > "+(curPage-1)*rowsPerPage);
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ...”
查出的记录也很多怎么办?比如 如果查出100w条,是不是同样每次next都会同样慢??还有好像如果查出的结果少于10w的话,即使点击“last”
也不会很慢,
select col1,col2,col3,... from tablename
2、别做那么多嵌套;
select col1,col2,col3,... from tablename where rownum between 20 and 41;
3、管理好索引。
1.rownum 不能用between,只能用<
2.楼主方法是对的。
select a.* from table_name a
where rowid in (
select rid from (
select rowid as rid,rownum as rn from table_name
where ...
and rownum<&ceil_number)
where rn>&floor_number);