查看: 2268|回复: 4

SQL语句优化,如下:

[复制链接]
招聘 : 数据分析/ETL
论坛徽章:
3
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:35ITPUB十周年纪念徽章
日期:2011-11-01 16:24:51
发表于 2011-1-19 10:05 | 显示全部楼层 |阅读模式
这个SQL可以怎么再优化一下吗?我想了很久都没想出来,请大家帮我看看还可以怎么优化?

select * from(select rownum rn,f.* from (  select a.*, t6.oppcode productcode,t6.field03 PUNIT,t6.name productname,
t6.spec productspec,t6.orign orign,t6.field04 PPACK,t6.field05 PIMPORT_HOME ,t6.FIELD02 PTYPE,t6.FIELD01 PDOSE,t7.code sendercode,t7.NAME sendername,
t8.code receivercode,t8.NAME receivername
from (select t1.id id,t1.sender_id sender_id,t1.receiver_id receiver_id,
t1.product_id product_id,t1.unit_id unit_id,t1.batchnumber batchnumber,
t1.price price,t1.amount amount,t1.quantity quantity,t1.saledate saledate,
t1.confirmedshipdate confirmedshipdate,t1.sendertype sendertype, t1.province_id provinceid,
t1.city_id cityid,t1.provinder provinder, t1.province provincename,
t1.city city,t1.inputdate inputdate,t1.uploaddate uploaddate,t1.receivertype receivertype,
t1.GY_PRODUCT_CODE,t1.SALE_DEPMENT,t1.SALE_DEPMENT_ID,t1.DUTY_AMOUNT,
t1.EXPIRATIONDATE,t1.PRODUCTDATE,t1.RECEIVER_ADDRESS,t1.CUSTOMER_NAME,t1.CUSTOMER_CODE,t1.CUSTOMER_TYPE,
t1.xszt_id,t1.xszt_name,t1.hz_id,t1.hz_name,t1.field01
from t_iv_salestracking t1, ( select iv_permission org_id from t_manage_iv_permission
where flag = 2 and user_id = 566256) t2, ( select iv_permission product_id from t_manage_iv_permission
where flag = 1 and user_id = 566256) t3 where t1.sender_id = t2.org_id  and t1.product_id = t3.product_id  
and t1.saledate >= to_date('2010-06-01','yyyy-mm-dd hh24:mi:ss')
and t1.saledate <= to_date('2011-01-18','yyyy-mm-dd hh24:mi:ss') ) a,
t_iv_product t6, t_mgt_org t7,  t_mgt_org t8  where  a.product_id = t6.id and a.sender_id = t7.id and a.receiver_id = t8.id  order by SENDER_ID desc) f   
where rownum <=24) where rn >= 0
论坛徽章:
1
ITPUB社区OCM联盟徽章
日期:2014-08-08 09:20:49
发表于 2011-1-19 11:50 | 显示全部楼层
从sql表面来看,能不能把你的时间间隔设置小一点,把order放到 a里面
因为不知道你的sql的字段的索引,也没看到你的执行计划

[ 本帖最后由 zhanglincon 于 2011-1-19 11:52 编辑 ]

使用道具 举报

回复
招聘 : 数据分析/ETL
论坛徽章:
3
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:35ITPUB十周年纪念徽章
日期:2011-11-01 16:24:51
 楼主| 发表于 2011-1-19 17:03 | 显示全部楼层
SQL> select * from(select rownum rn,f.* from (  select a.*, t6.oppcode productcode,t6.field03 PUNIT,t6.name productname,
  2  t6.spec productspec,t6.orign orign,t6.field04 PPACK,t6.field05 PIMPORT_HOME ,t6.FIELD02 PTYPE,t6.FIELD01 PDOSE,t7.code sendercode,t7.NAME sendername,
  3  t8.code receivercode,t8.NAME receivername
  4  from (select t1.id id,t1.sender_id sender_id,t1.receiver_id receiver_id,
  5  t1.product_id product_id,t1.unit_id unit_id,t1.batchnumber batchnumber,
  6  t1.price price,t1.amount amount,t1.quantity quantity,t1.saledate saledate,
  7  t1.confirmedshipdate confirmedshipdate,t1.sendertype sendertype, t1.province_id provinceid,
  8  t1.city_id cityid,t1.provinder provinder, t1.province provincename,
  9  t1.city city,t1.inputdate inputdate,t1.uploaddate uploaddate,t1.receivertype receivertype,
10  t1.GY_PRODUCT_CODE,t1.SALE_DEPMENT,t1.SALE_DEPMENT_ID,t1.DUTY_AMOUNT,
11  t1.EXPIRATIONDATE,t1.PRODUCTDATE,t1.RECEIVER_ADDRESS,t1.CUSTOMER_NAME,t1.CUSTOMER_CODE,t1.CUSTOMER_TYPE,
t1.xszt_id,t1.xszt_name,t1.hz_id,t1.hz_name,t1.field01
12   13  from t_iv_salestracking t1, ( select iv_permission org_id from t_manage_iv_permission
14  where flag = 2 and user_id = 566256) t2, ( select iv_permission product_id from t_manage_iv_permission
15  where flag = 1 and user_id = 566256) t3 where t1.sender_id = t2.org_id  and t1.product_id = t3.product_id  
16  and (t1.saledate between to_date('2010-06-01','yyyy-mm-dd hh24:mi:ss') and to_date('2011-01-18','yyyy-mm-dd hh24:mi:ss'))) a,
17  t_iv_product t6, t_mgt_org t7,  t_mgt_org t8  where  a.product_id = t6.id and a.sender_id = t7.id and a.receiver_id = t8.id order by SENDER_ID desc) f   
18  where rownum <=24) where rn >= 0
19  /

24 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 749234649

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

| Id  | Operation                            | Name                 | Rows  | By
tes |TempSpc| Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT                     |                      |    24 |
163K|       |  9844   (1)| 00:01:59 |

|*  1 |  VIEW                                |                      |    24 |
163K|       |  9844   (1)| 00:01:59 |

|*  2 |   COUNT STOPKEY                      |                      |       |
    |       |            |          |

|   3 |    VIEW                              |                      |   215K|  1
428M|       |  9844   (1)| 00:01:59 |

|*  4 |     SORT ORDER BY STOPKEY            |                      |   215K|
101M|       |  9844   (1)| 00:01:59 |

|*  5 |      FILTER                          |                      |       |
    |       |            |          |

|*  6 |       HASH JOIN                      |                      |   215K|
101M|       |  9844   (1)| 00:01:59 |

|   7 |        TABLE ACCESS FULL             | T_IV_PRODUCT         |  1986 |
186K|       |    11   (0)| 00:00:01 |

|*  8 |        HASH JOIN                     |                      |   215K|
81M|       |  9828   (1)| 00:01:58 |

|*  9 |         INDEX RANGE SCAN             | IDX_COM1             |  2510 | 37
650 |       |    12   (0)| 00:00:01 |

|* 10 |         HASH JOIN                    |                      |   210K|
76M|  3848K|  9812   (1)| 00:01:58 |

|  11 |          TABLE ACCESS FULL           | T_MGT_ORG            | 78688 |  2
920K|       |   264   (2)| 00:00:04 |

|* 12 |          HASH JOIN                   |                      |   210K|
69M|  3848K|  5797   (1)| 00:01:10 |

|  13 |           TABLE ACCESS FULL          | T_MGT_ORG            | 78688 |  2
920K|       |   264   (2)| 00:00:04 |

|* 14 |           TABLE ACCESS BY INDEX ROWID| T_IV_SALESTRACKING   |   332 | 96
612 |       |    72   (0)| 00:00:01 |

|  15 |            NESTED LOOPS              |                      |   210K|
61M|       |  2161   (1)| 00:00:26 |

|* 16 |             INDEX RANGE SCAN         | IDX_COM1             |   636 |  9
540 |       |     5   (0)| 00:00:01 |

|* 17 |             INDEX RANGE SCAN         | IDX_SALETRK_PRODUNIT |   114 |
    |       |     2   (0)| 00:00:01 |

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


Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("RN">=0)
   2 - filter(ROWNUM<=24)
   4 - filter(ROWNUM<=24)
   5 - filter(TO_DATE('2010-06-01','yyyy-mm-dd hh24:mi:ss')<=TO_DATE('2011-01-18
','yyyy-mm-dd hh24:mi:ss'))

   6 - access("T1"."PRODUCT_ID"="T6"."ID")
   8 - access("T1"."SENDER_ID"="IV_PERMISSION")
   9 - access("USER_ID"=566256 AND "FLAG"=2)
  10 - access("T1"."SENDER_ID"="T7"."ID")
  12 - access("T1"."RECEIVER_ID"="T8"."ID")
  14 - filter("T1"."SALEDATE">=TO_DATE('2010-06-01','yyyy-mm-dd hh24:mi:ss') AND


              "T1"."SALEDATE"<=TO_DATE('2011-01-18','yyyy-mm-dd hh24:mi:ss'))
  16 - access("USER_ID"=566256 AND "FLAG"=1)
  17 - access("T1"."PRODUCT_ID"="IV_PERMISSION")


Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
     974504  consistent gets
      50258  physical reads
        116  redo size
       7711  bytes sent via SQL*Net to client
        480  bytes received via SQL*Net from client
          3  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
         24  rows processed

使用道具 举报

回复
论坛徽章:
10
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44ITPUB十周年纪念徽章
日期:2011-11-01 16:21:152011新春纪念徽章
日期:2011-05-06 16:49:002011新春纪念徽章
日期:2011-02-18 11:43:33ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512010新春纪念徽章
日期:2010-03-01 11:07:22生肖徽章2007版:鸡
日期:2009-09-28 12:51:472009新春纪念徽章
日期:2009-01-04 14:52:28生肖徽章2007版:鼠
日期:2008-01-02 17:35:53劳斯莱斯
日期:2013-12-16 10:42:54
发表于 2011-1-19 17:11 | 显示全部楼层
哥 最起码你格式化一下sql 啊!!

使用道具 举报

回复
招聘 : 数据分析/ETL
论坛徽章:
3
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:35ITPUB十周年纪念徽章
日期:2011-11-01 16:24:51
 楼主| 发表于 2011-1-19 21:27 | 显示全部楼层
SQL> set autotrace traceonly;
SQL> select * from(select rownum rn,f.* from (  select a.*, t6.oppcode productcode,t6.field03 PUNIT,t6.name productname,
  2  t6.spec productspec,t6.orign orign,t6.field04 PPACK,t6.field05 PIMPORT_HOME ,t6.FIELD02 PTYPE,t6.FIELD01 PDOSE,t7.code sendercode,t7.NAME sendername,
  3  t8.code receivercode,t8.NAME receivername
  4  from (select t1.id id,t1.sender_id sender_id,t1.receiver_id receiver_id,
  5  t1.product_id product_id,t1.unit_id unit_id,t1.batchnumber batchnumber,
  6  t1.price price,t1.amount amount,t1.quantity quantity,t1.saledate saledate,
  7  t1.confirmedshipdate confirmedshipdate,t1.sendertype sendertype, t1.province_id provinceid,
  8  t1.city_id cityid,t1.provinder provinder, t1.province provincename,
  9  t1.city city,t1.inputdate inputdate,t1.uploaddate uploaddate,t1.receivertype receivertype,
10  t1.GY_PRODUCT_CODE,t1.SALE_DEPMENT,t1.SALE_DEPMENT_ID,t1.DUTY_AMOUNT,
11  t1.EXPIRATIONDATE,t1.PRODUCTDATE,t1.RECEIVER_ADDRESS,t1.CUSTOMER_NAME,t1.CUSTOMER_CODE,t1.CUSTOMER_TYPE,
12  t1.xszt_id,t1.xszt_name,t1.hz_id,t1.hz_name,t1.field01
13  from t_iv_salestracking t1, ( select iv_permission org_id from t_manage_iv_permission
14  where flag = 2 and user_id = 566256) t2, ( select iv_permission product_id from t_manage_iv_permission
15  where flag = 1 and user_id = 566256) t3 where t1.sender_id = t2.org_id  and t1.product_id = t3.product_id  
16  and (t1.saledate between to_date('2010-06-01','yyyy-mm-dd hh24:mi:ss') and to_date('2011-01-18','yyyy-mm-dd hh24:mi:ss'))) a,
17  t_iv_product t6, t_mgt_org t7,  t_mgt_org t8  where  a.product_id = t6.id and a.sender_id = t7.id and a.receiver_id = t8.id order by SENDER_ID desc) f   
18  where rownum <=24) where rn >= 0
19  /

24 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 749234649

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

| Id  | Operation                            | Name                 | Rows  | Bytes |TempSpc| Cost (
%CPU)| Time     |

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

|   0 | SELECT STATEMENT                     |                      |    24 |   163K|       |  9844
  (1)| 00:01:59 |

|*  1 |  VIEW                                |                      |    24 |   163K|       |  9844
  (1)| 00:01:59 |

|*  2 |   COUNT STOPKEY                      |                      |       |       |       |
     |          |

|   3 |    VIEW                              |                      |   215K|  1428M|       |  9844
  (1)| 00:01:59 |

|*  4 |     SORT ORDER BY STOPKEY            |                      |   215K|   101M|       |  9844
  (1)| 00:01:59 |

|*  5 |      FILTER                          |                      |       |       |       |
     |          |

|*  6 |       HASH JOIN                      |                      |   215K|   101M|       |  9844
  (1)| 00:01:59 |

|   7 |        TABLE ACCESS FULL             | T_IV_PRODUCT         |  1986 |   186K|       |    11
  (0)| 00:00:01 |

|*  8 |        HASH JOIN                     |                      |   215K|    81M|       |  9828
  (1)| 00:01:58 |

|*  9 |         INDEX RANGE SCAN             | IDX_COM1             |  2510 | 37650 |       |    12
  (0)| 00:00:01 |

|* 10 |         HASH JOIN                    |                      |   210K|    76M|  3848K|  9812
  (1)| 00:01:58 |

|  11 |          TABLE ACCESS FULL           | T_MGT_ORG            | 78688 |  2920K|       |   264
  (2)| 00:00:04 |

|* 12 |          HASH JOIN                   |                      |   210K|    69M|  3848K|  5797
  (1)| 00:01:10 |

|  13 |           TABLE ACCESS FULL          | T_MGT_ORG            | 78688 |  2920K|       |   264
  (2)| 00:00:04 |

|* 14 |           TABLE ACCESS BY INDEX ROWID| T_IV_SALESTRACKING   |   332 | 96612 |       |    72
  (0)| 00:00:01 |

|  15 |            NESTED LOOPS              |                      |   210K|    61M|       |  2161
  (1)| 00:00:26 |

|* 16 |             INDEX RANGE SCAN         | IDX_COM1             |   636 |  9540 |       |     5
  (0)| 00:00:01 |

|* 17 |             INDEX RANGE SCAN         | IDX_SALETRK_PRODUNIT |   114 |       |       |     2
  (0)| 00:00:01 |

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


Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("RN">=0)
   2 - filter(ROWNUM<=24)
   4 - filter(ROWNUM<=24)
   5 - filter(TO_DATE('2010-06-01','yyyy-mm-dd hh24:mi:ss')<=TO_DATE('2011-01-18','yyyy-mm-dd hh24:m
i:ss'))

   6 - access("T1"."PRODUCT_ID"="T6"."ID")
   8 - access("T1"."SENDER_ID"="IV_PERMISSION")
   9 - access("USER_ID"=566256 AND "FLAG"=2)
  10 - access("T1"."SENDER_ID"="T7"."ID")
  12 - access("T1"."RECEIVER_ID"="T8"."ID")
  14 - filter("T1"."SALEDATE">=TO_DATE('2010-06-01','yyyy-mm-dd hh24:mi:ss') AND
              "T1"."SALEDATE"<=TO_DATE('2011-01-18','yyyy-mm-dd hh24:mi:ss'))
  16 - access("USER_ID"=566256 AND "FLAG"=1)
  17 - access("T1"."PRODUCT_ID"="IV_PERMISSION")


Statistics
----------------------------------------------------------
       2732  recursive calls
          0  db block gets
     975130  consistent gets
      97418  physical reads
        232  redo size
       7711  bytes sent via SQL*Net to client
        480  bytes received via SQL*Net from client
          3  SQL*Net roundtrips to/from client
         65  sorts (memory)
          0  sorts (disk)
         24  rows processed

使用道具 举报

回复

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

本版积分规则 发表回复

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