日期:2014-05-17  浏览次数:20861 次

关于海量数据求最晚时间的问题
各位大大,小弟在学习管理一个别人已经建立好的远程数据库,遇到了一个停止响应的问题,先说说数据库环境:
数据库每分钟接收1000+条即时生成的数据
数据表TEST已经存储了100万条以上的数据

现在我想求指定种类的和最晚生成时间的记录内容
当语句写成
select max(time) from test;

select 列1,列2,time,种类 from 种类 ='AA'
都可以正常的返回数据

但是如果写成

select max(time) from test where 种类 ='AA'
整个sql_plus就会停止响应,用TOAD的话也会一直卡在读秒

请问一下,这里的问题是出在哪里呢,有办法解决吗?
(按理来说如果数据内容太大了的话 ,直接搜索 种类 ='AA' 会更卡啊)


------解决方案--------------------
(1)百万级一般不应该很卡的,除非你的临时表空间不够了
(2)上述几个SQL的执行时间应该大体相当
(3)可能慢的原因是你执行SQL的时候,其他应用正在插入该表数据。插入过程中会导致表锁和等待。如果你查询时正好有很多数据正在插入,则会表现得有点卡
------解决方案--------------------
1楼正确。
也可以改变sql:求第一条数据的方法,求得最大时间,试试这样如何。
------解决方案--------------------
看执行计划

贴出来看看