日期:2014-05-16  浏览次数:20685 次

SQL查询数据慢,求优化
我的表有5000W的数据,建了5个索引,有一个索引感觉没起什么作用,各位大侠帮忙看看
表部分字段:
FLAG varchar2(2)  
TIME_STAMP varchar2(14) --存放的时间,格式:yyyymmddhh24miss
。。。。
。。。。

flag字段和time_stamp字段都单独建有索引,当FLAG单独作为查询条件的时候查询速度在3秒左右,但用time_stamp单独作为条件查询是,就得要近3分钟才能出数据,非常不解。

因为现在是测试,只有5天的数据,差不多1天1000万,我想知道在不建立表分区的情况下,应该怎么做优化,提高查询速度

我用的是ORACLE11G,第二版

------解决方案--------------------
那只能说明
FLAG 字段的重复数据比较少,索引起到了作用。
TIME_STAMP 字段的重复数据较多,索引没起作用。

或者说有可能你建的索引是一个普通的索引但是你在写where条件的时候写成了
to_date(TIME_STAMP,'yyyymmddhh24miss') = xxxx;
这样会导致索引实效。
------解决方案--------------------

这么多索引,维护成本估计也不小。 如果表上的insert 和update 事务很多, 速度也会受影响。

是否走索引,SQL 的性能怎么样,可以通过执行计划来查看。

Oracle 执行计划(Explain Plan) 说明
http://blog.csdn.net/tianlesoftware/article/details/5827245
------解决方案--------------------