我有一张表 大约有2千万条数据,表中有一个栏位是记录插入的时间。
现在查询要求返回时间最近的前100条结果。
SQL:如下 请问怎么优化
select names
from (select names,t_date from a order by t_date desc )
where
rownum <= 100
现在查询要求返回时间最近的前100条结果。
SQL:如下 请问怎么优化
select names
from (select names,t_date from a order by t_date desc )
where
rownum <= 100
select names,t_date
from
(
select names,t_date,dense_rank()over(order by t_date desc) rn from tab1
)where rn<=100--考虑有时间有重复,所以用 dense_rank() 如果没有,可以用 row_number()
但是这样我按F5分析感觉效率还没有用order by高
建议写PL/SQL
考虑(1)拿程序来举例,假如有一个两千万的无序数组中,那么我要找前100条;
(2)假如有一个两千万的无序数组中,我找第k小(大)的数据。