Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

8

积分

0

好友

0

主题
1#
发表于 2012-5-23 10:45:45 | 查看: 4015| 回复: 5
一则SQL语句调优的问题,该表日数据量比较大。查询速度很慢。
曾经在主表上创建过索引但是实际使用过程中发现还不如不加索引。因此实在没办法了,希望各位能帮忙优化下

sqlhc_hemsda_hemsda_10.2.0.5.0_b7rngj2cx4v07_20120523103822.html

25.54 KB, 下载次数: 713

2#
发表于 2012-5-23 11:17:17
1.  table_cr 表的 create_time,为日期
     sdtype 表的组成的sql 语句的end_time为 字符. -->非常 不解为什么转成日期后,又要转成字符


2.根据sql的理解应该如果查table_cr 表的5.22号的数据,那么
       AND create_time >= to_date('2012-05-22', 'YYYY-MM-DD')
         AND create_time <= to_date('2012-05-23', 'YYYY-MM-DD')
      AND to_char(create_time, 'HH24:MI:SS') BETWEEN '00:00:00' AND '23:59:59'
   这个写法是有问题的.

3. address in 中有一个('') ........

回复 只看该作者 道具 举报

3#
发表于 2012-5-23 11:40:56
2.根据sql的理解应该如果查table_cr 表的5.22号的数据,那么
       AND create_time >= to_date('2012-05-22', 'YYYY-MM-DD')
         AND create_time <= to_date('2012-05-23', 'YYYY-MM-DD')
      AND to_char(create_time, 'HH24:MI:SS') BETWEEN '00:00:00' AND '23:59:59'
   这个写法是有问题的.

是因为我查询的是一天的数据,但是真实情况中可能会需要查询跨天或者一天中某个时段的数据

回复 只看该作者 道具 举报

4#
发表于 2012-5-23 14:37:09
不了峰说的对。
至少要把to_char给替换掉。
查询一天中某个时间段想其他办法解决。

回复 只看该作者 道具 举报

5#
发表于 2012-5-23 14:48:43
TABLE     NJSJFX.SDTYPE     Table lacks CBO Statistics.

    NJSJFX.SDTYPE  表没有 统计信息, 使用的是动态采样, 首先建议 收集该表和索引的统计信息

TABLE_CR 表上一次 收集统计信息是 31-12ÔÂ-11 统计信息可能陈旧, 且该表上只有一个索引 TABLE_PK , 这导致不得不对 做TABLE_CR FULL SCAN Partition Range Single。

建议:

1. 收集以上2张表和索引的统计信息
2. 根据sql tuning advisor的建议为 TABLE_CR 增加索引。



sqlhc.png

回复 只看该作者 道具 举报

6#
发表于 2012-5-23 17:13:48
谢谢。分析过表后也根据sql tuning advisor的建议做了索引。速度有明显的提升

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-15 19:51 , Processed in 0.053867 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569