查看: 2090|回复: 6

[性能调整] 帮忙优化下面的语句??

[复制链接]
论坛徽章:
3
ITPUB9周年纪念徽章
日期:2010-10-08 09:32:26ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042012新春纪念徽章
日期:2012-01-04 11:53:54
发表于 2010-4-13 08:47 | 显示全部楼层 |阅读模式
select max(A.end_no) from barcode_1.print_hist A
where a.barcode like 'HSS6___________________'  
and  a.barcode like '____MEB233Z____________'  
and  a.barcode like '___________2___________'  
and  a.barcode like '_______________33______'
and  a.barcode like '____________________4Z2'

SQL> select max(A.end_no) from barcode_1.print_hist A
  2  where a.barcode like 'HSS6___________________'
  3  and  a.barcode like '____MEB233Z____________'
  4  and  a.barcode like '___________2___________'
  5  and  a.barcode like '_______________33______'
  6  and  a.barcode like '____________________4Z2';


Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=1638 Card=1 Bytes=24
          )

   1    0   SORT (AGGREGATE)
   2    1     TABLE ACCESS (BY INDEX ROWID) OF 'PRINT_HIST' (Cost=1638
           Card=1 Bytes=24)

   3    2       INDEX (RANGE SCAN) OF 'SYS_C007660' (UNIQUE) (Cost=243
           Card=6376)





Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
       2777  consistent gets
          3  physical reads
          0  redo size
        385  bytes sent via SQL*Net to client
        500  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

SQL>
论坛徽章:
3
ITPUB9周年纪念徽章
日期:2010-10-08 09:32:26ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042012新春纪念徽章
日期:2012-01-04 11:53:54
 楼主| 发表于 2010-4-13 08:50 | 显示全部楼层

回复 #1 jackli00 的帖子

我的优化方法:

select * from (
select A.end_no from barcode_1.print_hist A
where a.barcode like 'HSS6___________________'  
and  a.barcode like '____MEB233Z____________'  
and  a.barcode like '___________2___________'  
and  a.barcode like '_______________33______'
and  a.barcode like '____________________4Z2' order by a.end_no desc) where rownum<2

使用道具 举报

回复
论坛徽章:
3
ITPUB9周年纪念徽章
日期:2010-10-08 09:32:26ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042012新春纪念徽章
日期:2012-01-04 11:53:54
 楼主| 发表于 2010-4-13 08:52 | 显示全部楼层

回复 #2 jackli00 的帖子

搞错了,
consistent gets还是没有降下来.

使用道具 举报

回复
论坛徽章:
136
ITPUB年度最佳技术回答奖
日期:2010-06-12 13:17:14现代
日期:2013-10-02 14:53:59路虎
日期:2013-11-22 12:26:182014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
发表于 2010-4-13 08:56 | 显示全部楼层
索引里冗余end_no字段

使用道具 举报

回复
论坛徽章:
3
ITPUB9周年纪念徽章
日期:2010-10-08 09:32:26ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042012新春纪念徽章
日期:2012-01-04 11:53:54
 楼主| 发表于 2010-4-13 09:01 | 显示全部楼层

回复 #4 棉花糖ONE 的帖子

楼上能否解析一下,end_no字段没有创建索引呢.

使用道具 举报

回复
论坛徽章:
136
ITPUB年度最佳技术回答奖
日期:2010-06-12 13:17:14现代
日期:2013-10-02 14:53:59路虎
日期:2013-11-22 12:26:182014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
发表于 2010-4-13 09:02 | 显示全部楼层

回复 #5 jackli00 的帖子

(barcode,end_no)这样就避免了回表

使用道具 举报

回复
论坛徽章:
3
ITPUB9周年纪念徽章
日期:2010-10-08 09:32:26ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042012新春纪念徽章
日期:2012-01-04 11:53:54
 楼主| 发表于 2010-4-13 09:11 | 显示全部楼层

回复 #6 棉花糖ONE 的帖子

非常谢谢!
创建索引(barcode,end_no),性能提高了。

SQL> select max(A.end_no) from barcode_1.print_hist A,barcode_1.COMBO_ITEM_LIST
B
  2  where B.cust_BRCD_FMT_id='J5'
  3  and  a.barcode like 'HSS6___________________'
  4  and  a.barcode like '____MEB233Z____________'
  5  and  a.barcode like '___________2___________'
  6  and  a.barcode like '_______________33______'
  7  and  a.barcode like '____________________4Z2';


Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=1 Bytes=26)
   1    0   SORT (AGGREGATE)
   2    1     MERGE JOIN (CARTESIAN) (Cost=3 Card=8 Bytes=208)
   3    2       INDEX (RANGE SCAN) OF 'IDX_PRINT_HIST_END_NO' (NON-UNI
          QUE) (Cost=2 Card=1 Bytes=24)

   4    2       BUFFER (SORT) (Cost=1 Card=212 Bytes=424)
   5    4         INDEX (RANGE SCAN) OF 'IDX_COMBO_LIST_FMT_ID' (NON-U
          NIQUE) (Cost=1 Card=212 Bytes=424)





Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
        414  consistent gets
          0  physical reads
          0  redo size
        385  bytes sent via SQL*Net to client
        500  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
          1  rows processed

使用道具 举报

回复

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

本版积分规则 发表回复

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号
  
快速回复 返回顶部 返回列表