查看: 3386|回复: 16

[性能调整] 求一语句优化

[复制链接]
论坛徽章:
4
奥运会纪念徽章:射击
日期:2008-10-24 13:23:422010新春纪念徽章
日期:2010-03-01 11:19:072010数据库技术大会纪念徽章
日期:2010-05-13 09:34:23ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
发表于 2011-6-10 10:41 | 显示全部楼层 |阅读模式
select x.record_date || substr(x.record_time,1,4),x.last_price
     from tb_cff_if x
     where --x.record_date > :replaceSmallTime and x.record_date < :replaceBigTime
     --and
     id in (
                  (select min(a.id)
                  from tb_cff_if a
                   where a.contract_code = 'IF1101'
                 and  a.record_date > 20101220 and a.record_date < 20110121
                  group by a.record_date,substr(a.record_time,1,4))
                  union
                   (select min(b.id)
                  from tb_cff_if b
                 where b.contract_code = 'IF1102'
                     and  b.record_date > 20110124 and b.record_date < 20110218
                  group by b.record_date, substr(b.record_time,1,4))
                   union
                   (select min(c.id)
                   from tb_cff_if c
                   where c.contract_code = 'IF1103'
                   and  c.record_date > 20110221 and c.record_date < 20110318
                   group by c.record_date, substr(c.record_time,1,4))
                   union
                   (select min(d.id)
                   from tb_cff_if d
                   where d.contract_code = 'IF1104'
                   and  d.record_date > 20110321 and d.record_date < 20110415
                   group by d.record_date, substr(d.record_time,1,4))
                   union
                   (select min(e.id)
                   from tb_cff_if e
                   where e.contract_code = 'IF1105'
                   and  e.record_date > 20110418 and e.record_date < 20110520
                   group by e.record_date, substr(e.record_time,1,4))
                   union
                   (select min(f.id)
                   from tb_cff_if f
                   where f.contract_code = 'IF1106'
                   and  f.record_date > 20110523
                   group by f.record_date, substr(f.record_time,1,4))
                   )
    order by id


contract_code和record_date上有索引 , 但是语句就是不走索引./
2011-06-10_103955.jpg
论坛徽章:
9
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:00ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51蛋疼蛋
日期:2011-08-09 14:26:55ITPUB十周年纪念徽章
日期:2011-11-01 16:24:51ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19奥迪
日期:2013-09-12 15:57:042014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09
发表于 2011-6-10 10:48 | 显示全部楼层
show一下 tb_cff_if的表的数量,还有确认一下子查询,手动单独执行,或者你认为应该怎么走最好?

从语句来看建立record_date,contract_code 符合索引应该是最好的.

使用道具 举报

回复
论坛徽章:
4
奥运会纪念徽章:射击
日期:2008-10-24 13:23:422010新春纪念徽章
日期:2010-03-01 11:19:072010数据库技术大会纪念徽章
日期:2010-05-13 09:34:23ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
 楼主| 发表于 2011-6-10 10:51 | 显示全部楼层
表有4913215 条数据  但是就是不走索引.
我建一个符合索引试试
create index idx_comb_cff on tb_cff_if(record_Date,substr(record_time,1,4))

[ 本帖最后由 ouyangzi 于 2011-6-10 10:54 编辑 ]

使用道具 举报

回复
论坛徽章:
3
ITPUB9周年纪念徽章
日期:2010-10-08 09:32:26ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042012新春纪念徽章
日期:2012-01-04 11:53:54
发表于 2011-6-10 10:51 | 显示全部楼层
查看一下:
contract_code列选择性是否高?
record_date列查询条件类型不匹配?

使用道具 举报

回复
论坛徽章:
18
紫蛋头
日期:2011-07-25 08:06:53咸鸭蛋
日期:2011-12-27 11:35:38鲜花蛋
日期:2012-01-11 11:08:36奥运会纪念徽章:射击
日期:2012-09-11 08:56:18奥运会纪念徽章:体操
日期:2012-10-25 09:07:51紫蛋头
日期:2012-12-10 13:46:51灰彻蛋
日期:2013-01-28 14:23:202013年新春福章
日期:2013-02-25 14:51:24
发表于 2011-6-10 10:52 | 显示全部楼层
f.contract_code 沒走到索引應該是因為cardinality數量太大,可以將每個union子句分開分析一下

e.record_date > 20110418 and e.record_date < 20110520
record_date是日期、字符、還是number型數據,
這個沒走到索引,應該是條件類型不匹配

使用道具 举报

回复
论坛徽章:
18
紫蛋头
日期:2011-07-25 08:06:53咸鸭蛋
日期:2011-12-27 11:35:38鲜花蛋
日期:2012-01-11 11:08:36奥运会纪念徽章:射击
日期:2012-09-11 08:56:18奥运会纪念徽章:体操
日期:2012-10-25 09:07:51紫蛋头
日期:2012-12-10 13:46:51灰彻蛋
日期:2013-01-28 14:23:202013年新春福章
日期:2013-02-25 14:51:24
发表于 2011-6-10 10:54 | 显示全部楼层
可以這兩個字段建聯合索引,但注意record_date的字段類型,建索引時需不需要用到函數 轉一下

使用道具 举报

回复
论坛徽章:
4
奥运会纪念徽章:射击
日期:2008-10-24 13:23:422010新春纪念徽章
日期:2010-03-01 11:19:072010数据库技术大会纪念徽章
日期:2010-05-13 09:34:23ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
 楼主| 发表于 2011-6-10 11:07 | 显示全部楼层
谢谢 各位, 原来record_Date 是varchar2类型了 全部没有加引号, 所以进行了隐式转换.
加上引号, 现在是走刚建的符合索引了, 但部分不走.
2011-06-10_110716.jpg

使用道具 举报

回复
论坛徽章:
51
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:22铁扇公主
日期:2012-02-21 15:03:13最佳人气徽章
日期:2012-03-13 17:39:18ITPUB季度 技术新星
日期:2012-05-22 15:10:11ITPUB 11周年纪念徽章
日期:2012-10-09 18:13:332013年新春福章
日期:2013-02-25 14:51:24ITPUB社区12周年站庆徽章
日期:2013-08-12 09:34:36itpub13周年纪念徽章
日期:2014-09-28 10:55:55
发表于 2011-6-10 11:27 | 显示全部楼层

回复 #7 ouyangzi 的帖子

你这有个重复我觉得
你既然已经是in 了~那么就会过滤掉重复的数据
你里面很明显就没必要在 union了~
改成union all 肯定快很多~

使用道具 举报

回复
论坛徽章:
0
发表于 2011-6-10 11:41 | 显示全部楼层
上海室内空气检测机构上海空气检测、治理机构-立佳洁管理团队拥有优秀服务质量,雄厚的技术功底,强大的科研队伍,并拥有一支当今室内环保行业的资深专家团队。根据上海室内空气检测、空气治理需求,经过多年的开发和研究,推出的一系列空气净化环保产品受到了广大消费者的欢迎,也建立了有口皆碑的信誉和行业领导者地位。
在机构资质和荣誉方面,立佳洁上海室内空气检测治理机构得到了社会各界的肯定和信任。作为ISO9001:2000质量管理体系认证单位、净化空气用光催化剂国家标准起草制定单位、天津科技大学科研开发和教学实习单位、国家室内环境监测委员会会员单位、PICC中国人保财险独家质量承保单位……我们始终坚守 “致力室内(车内)环保,关爱国人健康”的企业宗旨,团结向上、拼搏创新,用智慧和汗水,清除室内(车内)空气污染,为国人创造健康的生活空间而努力奋斗!

使用道具 举报

回复
论坛徽章:
14
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:52沸羊羊
日期:2015-03-04 14:43:43马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11福特
日期:2013-10-14 21:18:25凯迪拉克
日期:2013-09-23 23:01:572013年新春福章
日期:2013-02-25 14:51:242012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412011新春纪念徽章
日期:2011-02-18 11:43:33
发表于 2011-6-10 14:07 | 显示全部楼层
record_date  做個直方圖看看?

contract_code這個欄位唯一性怎麼樣?

使用道具 举报

回复

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

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表