我有一个历史数据表(Data_Smoke_History):设备号(dev_id),时间(date_time)字段设为联合主键。
现在表中大概有100多万条数据。直接用语句 select * from Data_Smoke_History; 查询所有数据,速度很快。
如果加一按时间字段排序的话,速度慢的让人无法忍受:select * from Data_Smoke_History order  by date_time;
而按dev_id 字段排序速度也很快,快无奈了:select * from Data_Smoke_History order  by dev_id;

解决方案 »

  1.   

    在ORACLE中,ORDER BY 子句也是可以用到索引的.并且要查看一下NLS_SORT的值是什么,如果不是BINARY的话,则一定要在排序字段上建立索引以加快速度,(因为,如果NLS_SORT的值不是BINARY的话,查询语句会执行全表扫描),但是,NLS_SORT的值是BINARY的话,在执行排序时,所需的空间是比较小的.并且速度也是比较快的.建议:1.将NLS_SORT的值设置为BINARY,最好能在索引列上进行排序.2.如果NLS_SORT的值不是BINARY,则最好能在排序列上建立索引.
      

  2.   

    不懂啊啊啊啊select * from 表 where order by stime  desc 怎么不得的啊????