查看: 2150|回复: 3

[PL/SQL] 看这个执行计划该如何调整sql

[复制链接]
论坛徽章:
149
保时捷
日期:2013-09-17 13:41:40保时捷
日期:2013-10-23 11:01:24兰博基尼
日期:2013-09-17 13:41:40兰博基尼
日期:2013-10-31 13:54:31林肯
日期:2013-10-29 11:08:33林肯
日期:2013-09-17 13:41:40福特
日期:2013-09-17 13:41:40福特
日期:2013-10-24 14:12:53凯迪拉克
日期:2013-10-31 13:54:28凯迪拉克
日期:2013-09-17 13:41:40
发表于 2012-2-22 17:20 | 显示全部楼层 |阅读模式
select a.id
from
t_article a where exists ( select 1 from t_object2column o2c,
  t_columnlefttree ct where o2c.columnid=ct.offspringid and ct.parentid=:1
  and o2c.objid=a.id and o2c.objtype=1)


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse     8722      0.09       0.10          0          0          0           0
Execute   8722      0.58       0.56          0          0          0           0
Fetch   394702    136.14     134.60          0    6648634          0     3912126
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total   412146    136.83     135.28          0    6648634          0     3912126

Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 70  
Rows     Row Source Operation
-------  ---------------------------------------------------
    129  NESTED LOOPS  (cr=397 pr=0 pw=0 time=24136 us)
    130   VIEW  VW_SQ_1 (cr=253 pr=0 pw=0 time=23353 us)
    130    HASH UNIQUE (cr=253 pr=0 pw=0 time=23222 us)
    132     HASH JOIN  (cr=253 pr=0 pw=0 time=12730 us)
      1      TABLE ACCESS BY INDEX ROWID T_COLUMNLEFTTREE (cr=3 pr=0 pw=0 time=40 us)
      1       INDEX RANGE SCAN IDX_COLUMNLEFTTREE_PARENTID (cr=2 pr=0 pw=0 time=18 us)(object id 56466)
  43492      INDEX FAST FULL SCAN IDX_O2C_OBJTYPE_OBJID_CID (cr=250 pr=0 pw=0 time=42 us)(object id 56653)
    129   INDEX UNIQUE SCAN PRIMARY00017 (cr=144 pr=0 pw=0 time=464 us)(object id 56886)


Rows     Execution Plan
-------  ---------------------------------------------------
      0  SELECT STATEMENT   MODE: ALL_ROWS
    129   NESTED LOOPS
    130    VIEW OF 'VW_SQ_1' (VIEW)
    130     HASH (UNIQUE)
    132      HASH JOIN
      1       TABLE ACCESS   MODE: ANALYZED (BY INDEX ROWID) OF
                  'T_COLUMNLEFTTREE' (TABLE)
      1        INDEX   MODE: ANALYZED (RANGE SCAN) OF
                   'IDX_COLUMNLEFTTREE_PARENTID' (INDEX)
  43492       INDEX   MODE: ANALYZED (FAST FULL SCAN) OF
                  'IDX_O2C_OBJTYPE_OBJID_CID' (INDEX)
    129    INDEX   MODE: ANALYZED (UNIQUE SCAN) OF 'PRIMARY00017' (INDEX
               (UNIQUE))

数据量
t_article                      19000
t_columnlefttree         24000
t_object2column         43000
-----------------------------------------------
索引
(t_article)
IDX_ARTICLE_COLUMNID                        Normal        COLUMNID                            N                N
IDX_ARTICLE_MID                                        Normal        M_ID                                           N                N
IDX_ARTICLE_THREADID_CREATORID        Normal        THREADID, CREATORID           N                N
IDX_ARTICLE_TITLE                                        Normal        TITLE                                           N                N
PRIMARY00017                                        Unique        ID                                           N                N
(t_columnlefttree)
IDX_COLUMNLEFTTREE_OFFSPRINGID        Normal        OFFSPRINGID                           N                N
IDX_COLUMNLEFTTREE_PARENTID        Normal        PARENTID                                           N                N
PRIMARY00049                                        Unique        OFFSPRINGID, PARENTID           N                N
(t_object2column)       
IDX_O2C_OBJTYPE_OBJID_CID        Normal        OBJTYPE, OBJID, COLUMNID        N                N
PRIMARY00143                                        Unique        ID                                            N                N
大家帮我看看这个sql该怎么调,谢谢!
论坛徽章:
149
保时捷
日期:2013-09-17 13:41:40保时捷
日期:2013-10-23 11:01:24兰博基尼
日期:2013-09-17 13:41:40兰博基尼
日期:2013-10-31 13:54:31林肯
日期:2013-10-29 11:08:33林肯
日期:2013-09-17 13:41:40福特
日期:2013-09-17 13:41:40福特
日期:2013-10-24 14:12:53凯迪拉克
日期:2013-10-31 13:54:28凯迪拉克
日期:2013-09-17 13:41:40
 楼主| 发表于 2012-2-22 18:26 | 显示全部楼层
求大师指点,晚辈感激不尽

使用道具 举报

回复
论坛徽章:
57
SQL极客
日期:2013-12-09 14:13:35秀才
日期:2016-01-21 13:42:39秀才
日期:2016-01-13 12:14:26SQL大赛参与纪念
日期:2016-01-13 10:32:19SQL数据库编程大师
日期:2016-01-13 10:30:43秀才
日期:2015-12-14 14:47:54秀才
日期:2015-10-19 15:50:392015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11优秀写手
日期:2014-11-08 06:00:14
发表于 2012-2-25 12:24 | 显示全部楼层
select id from (
select a.id,
row_number() over(partition by a.rowid order by a.rowid) hh
from
t_article a ,
t_object2column o2c,
t_columnlefttree ct
where
      o2c.columnid=ct.offspringid
and ct.parentid=:1
and o2c.objid=a.id
and o2c.objtype=1
)
where hh=1
你这个sql有点困难,假设表的别名如下:
t_article A
t_object2column B
t_columnlefttree C
由于你的b表处于关联A表和C表的中间表,
表的关联方式:
1.A-》B-》C
2.C-》B-》A
无论如何B表都是中间表,
你的C表parentid过滤后是多少?另外BC关联后是多少?
你可以用我上面的sql,看看能否提升?其实你的sql比较缺乏的是有效过滤数据的条件,你可以看看有什么有效过滤的条件或等价的条件。

使用道具 举报

回复
招聘 : Java研发
认证徽章
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14蜘蛛蛋
日期:2012-12-26 18:16:01茶鸡蛋
日期:2012-11-16 08:12:48ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07奥运会纪念徽章:网球
日期:2012-08-23 14:58:08奥运会纪念徽章:沙滩排球
日期:2012-07-19 17:28:14版主2段
日期:2012-07-07 02:21:02咸鸭蛋
日期:2012-03-23 18:17:482012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
发表于 2012-2-25 12:52 | 显示全部楼层
什么版本?
t_object2column或许需要一个COLUMNID单列或引导列的索引

IDX_O2C_OBJTYPE_OBJID_CID或许设计的不合理。。。

使用道具 举报

回复

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

本版积分规则 发表回复

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