求高手帮写个效率比较好的查询语句!该如何解决

求高手帮写个效率比较好的查询语句!!!!一张表中有张三、李四、王五、、、、、等N个人,这些人中每个人有多条数据但

求高手帮写个效率比较好的查询语句!!!!
一张表中有张三、李四、王五、、、、、等N个人,这些人中   每个人有多条数据  但是时间不同   


想要的结果:   把张三、李四、王五、、、等人各按时间排序后   取每个人的第一条数据  


注意点:这张表的数据在10W以上,要效率比较好的查询语句  



求高手指教啊,共同学习!!!!!!!!!!!!!
[解决办法]
select * from table where time
[解决办法]
name in(
select max(time)
[解决办法]
name from table group by name
)
[解决办法]

--假设你的表名T, 张三,李四人名列是name, 时间列是tdate
select * from
(select t.*, row_number() over (partition by name order by tdate) rn from t)
where rn = 1;
--这样查出来是时间最早的数据,如果要最晚的,
select * from
(select t.*, row_number() over (partition by name order by tdate desc) rn from t)
where rn = 1;

[解决办法]
引用:
SQL code
--假设你的表名T, 张三,李四人名列是name, 时间列是tdate
select * from
(select t.*, row_number() over (partition by name order by tdate) rn from t)
where rn = 1;
--这样查出来是时间最早的数据,如果要最晚的,
select * from
(select t.……

这样会比MAX更有效率? 请教
[解决办法]
select max(time)
[解决办法]
name from table group by name 这个子查询先根据name列分组,然后再将分组中最大的时间和name列组合起来。这样就形成了一个由name和time组合成的字符串了,例如:20121009ludwik。
那么这个子查询查询出来的结果就是这样格式的一个结果集。
然后再去查询全表,对比条件也就是time+name这样一个组合形式。

[解决办法]
引用:
select * from table where time
[解决办法]
name in(
select max(time)
[解决办法]
name from table group by name
)

还是对time列加个to_char()函数来转换一下好些。