1、select * from News where Ispublished=1 and rownum<=10 order by Publisheddate desc
这样查出来的话是先查出前10条数据再排序,不符合我们的要求。2、select * from (select * from News where Ispublished=1 order by Publisheddate desc) where rownum<=10
这样查出来符合我们的要求,但是它的实现原理是不是把所有的数据查出来,再取出前10条数据.如果是这样的话,当这张表的数据很多的话,它的执行效率会不会很低?有没有什么更好的方法,能保证效率,又能查出前10条数据????帮帮忙~~~~~~
这样查出来的话是先查出前10条数据再排序,不符合我们的要求。2、select * from (select * from News where Ispublished=1 order by Publisheddate desc) where rownum<=10
这样查出来符合我们的要求,但是它的实现原理是不是把所有的数据查出来,再取出前10条数据.如果是这样的话,当这张表的数据很多的话,它的执行效率会不会很低?有没有什么更好的方法,能保证效率,又能查出前10条数据????帮帮忙~~~~~~
第二条语句时先查询满足Ispublished=1的记录,排序,再取前10条;
如果一定要对大容量数据进行这样的操作的话,考虑先建个索引!
select * from news where id<=6
select * from (select a1.*,rownum rn from (select * from emp) a1 where rownum <= 10) where rn >= 1;
如果要有数据已被删除可以先进行排序再查询
select * from (select a1.*,rownum rn from (select * from emp order by empno) a1 where rownum <= 10) where rn >= 1;
这样就不是查询所有记录而再取前10条,可以对次语句进行封装为通用的。