查看: 6294|回复: 12

【讨论】这条计划如何看

[复制链接]
论坛徽章:
25
双子座
日期:2015-07-16 14:18:24蒙奇·D·路飞
日期:2016-12-31 10:56:17乌索普
日期:2016-11-17 17:21:49妮可·罗宾
日期:2016-06-26 22:18:42白羊座
日期:2016-05-12 14:53:36双子座
日期:2016-03-21 18:25:51水瓶座
日期:2016-03-09 15:54:47水瓶座
日期:2016-01-26 10:44:56双鱼座
日期:2015-08-20 10:30:26蒙奇·D·路飞
日期:2017-03-20 10:23:01
发表于 2015-3-4 14:56 | 显示全部楼层 |阅读模式
  1. IDX_CITY 是b_city(NBBH)索引
  2. B_CITY_INDEX是b_city(SZGJ, GNGJ)索引
  3. 疑问:
  4. 1.avh_cxcs(cxdatetime)有索引,优化器没走索引而走全表,可能是时间范围太长,时间范围小就走了。统计信息也是刚收集的,难道CBO认为这是最好的计划了,要修改走avh_cxcs(cxdatetime)索引只能加hint?
  5. 2.执行计划operation的VIEW,SORT ORDER BY,HASH GROUP BY消耗的时间最长,这些是怎么产生?
  6. 3.还有优化吗?谢谢。

  7. select *
  8.   from (select rownum num, t.*
  9.           from (select DDCITY, sum(cxcs) cxcs
  10.                   from avh_cxcs, b_city
  11.                  where cxdatetime >= to_date('2015-02-15 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
  12.                    and cxdatetime <= to_date('2015-03-04 11:33:21', 'yyyy-mm-dd hh24:mi:ss')
  13.                    and DDCITY = b_city.NBBH
  14.                    and b_city.gngj = '1'
  15.                  group by DDCITY
  16.                  order by cxcs desc) t
  17.          where rownum > 0)
  18. where num <= 100


  19. SQL> select * from table(dbms_xplan.display_cursor(null,null,'ADVANCED ALLSTATS LAST PEEKED_BINDS'));

  20. PLAN_TABLE_OUTPUT
  21. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  22. SQL_ID  6jxv03y9vdmz5, child number 0
  23. -------------------------------------
  24. select *   from (select rownum num, t.*           from (select DDCITY, sum(cxcs) cxcs                   from avh_cxcs, b_city                  where
  25. cxdatetime >= to_date('2015-02-15 00:00:00', 'yyyy-mm-dd hh24:mi:ss')                    and cxdatetime <= to_date('2015-03-04 11:33:21', 'yyyy-mm-dd
  26. hh24:mi:ss')                    and DDCITY = b_city.NBBH                    and b_city.gngj = '1'                  group by DDCITY                  order by
  27. cxcs desc) t          where rownum > 0)  where num <= 100

  28. Plan hash value: 2168891588

  29. -----------------------------------------------------------------------------------------------------------------------------------------------------------------------
  30. | Id  | Operation                     | Name             | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |  OMem |  1Mem | Used-Mem |
  31. -----------------------------------------------------------------------------------------------------------------------------------------------------------------------
  32. |*  1 |  VIEW                         |                  |      1 |    226 | 62828 | 11358   (4)| 00:02:17 |    100 |00:00:08.48 |   49799 |       |       |          |
  33. |   2 |   COUNT                       |                  |      1 |        |       |            |          |    197 |00:00:08.48 |   49799 |       |       |          |
  34. |*  3 |    FILTER                     |                  |      1 |        |       |            |          |    197 |00:00:08.48 |   49799 |       |       |          |
  35. |   4 |     VIEW                      |                  |      1 |    226 | 59890 | 11358   (4)| 00:02:17 |    197 |00:00:08.48 |   49799 |       |       |          |
  36. |   5 |      SORT ORDER BY            |                  |      1 |    226 |  4972 | 11358   (4)| 00:02:17 |    197 |00:00:08.48 |   49799 |  9216 |  9216 | 8192  (0)|
  37. |   6 |       HASH GROUP BY           |                  |      1 |    226 |  4972 | 11358   (4)| 00:02:17 |    197 |00:00:08.48 |   49799 |       |       |          |
  38. |*  7 |        HASH JOIN              |                  |      1 |    447K|  9603K| 11268   (4)| 00:02:16 |   3769K|00:00:04.56 |   49799 |  1348K|  1348K| 1223K (0)|
  39. |*  8 |         VIEW                  | index$_join$_004 |      1 |    546 |  3276 |    36   (3)| 00:00:01 |    213 |00:00:00.02 |      36 |       |       |          |
  40. |*  9 |          HASH JOIN            |                  |      1 |        |       |            |          |    213 |00:00:00.02 |      36 |  1078K|  1078K| 1667K (0)|
  41. |* 10 |           INDEX FAST FULL SCAN| IDX_CITY         |      1 |    546 |  3276 |    14   (0)| 00:00:01 |   4637 |00:00:00.01 |      15 |       |       |          |
  42. |* 11 |           INDEX FAST FULL SCAN| B_CITY_INDEX     |      1 |    546 |  3276 |    21   (0)| 00:00:01 |    620 |00:00:00.01 |      21 |       |       |          |
  43. |* 12 |         TABLE ACCESS FULL     | AVH_CXCS         |      1 |   3796K|    57M| 11187   (3)| 00:02:15 |   3888K|00:00:00.77 |   49763 |       |       |          |
  44. -----------------------------------------------------------------------------------------------------------------------------------------------------------------------

  45. Query Block Name / Object Alias (identified by operation id):
  46. -------------------------------------------------------------

  47.    1 - SEL$2        / from$_subquery$_001@SEL$1
  48.    2 - SEL$2
  49.    4 - SEL$3        / T@SEL$2
  50.    5 - SEL$3
  51.    8 - SEL$3978194F / B_CITY@SEL$3
  52.    9 - SEL$3978194F
  53.   10 - SEL$3978194F / indexjoin$_alias$_001@SEL$3978194F
  54.   11 - SEL$3978194F / indexjoin$_alias$_002@SEL$3978194F
  55.   12 - SEL$3        / AVH_CXCS@SEL$3

  56. Outline Data
  57. -------------

  58.   /*+
  59.       BEGIN_OUTLINE_DATA
  60.       IGNORE_OPTIM_EMBEDDED_HINTS
  61.       OPTIMIZER_FEATURES_ENABLE('10.2.0.1')
  62.       ALL_ROWS
  63.       OUTLINE_LEAF(@"SEL$3978194F")
  64.       OUTLINE_LEAF(@"SEL$3")
  65.       OUTLINE_LEAF(@"SEL$2")
  66.       OUTLINE_LEAF(@"SEL$1")
  67.       OUTLINE(@"SEL$3")
  68.       OUTLINE(@"SEL$2")
  69.       OUTLINE(@"SEL$1")
  70.       NO_ACCESS(@"SEL$1" "from$_subquery$_001"@"SEL$1")
  71.       NO_ACCESS(@"SEL$2" "T"@"SEL$2")
  72.       INDEX_JOIN(@"SEL$3" "B_CITY"@"SEL$3" ("B_CITY"."NBBH") ("B_CITY"."SZGJ" "B_CITY"."GNGJ"))
  73.       FULL(@"SEL$3" "AVH_CXCS"@"SEL$3")
  74.       LEADING(@"SEL$3" "B_CITY"@"SEL$3" "AVH_CXCS"@"SEL$3")
  75.       USE_HASH(@"SEL$3" "AVH_CXCS"@"SEL$3")
  76.       END_OUTLINE_DATA
  77.   */

  78. Predicate Information (identified by operation id):
  79. ---------------------------------------------------

  80.    1 - filter("NUM"<=100)
  81.    3 - filter(ROWNUM>0)
  82.    7 - access("DDCITY"="B_CITY"."NBBH")
  83.    8 - filter(("B_CITY"."GNGJ"='1' AND "B_CITY"."NBBH" IS NOT NULL))
  84.    9 - access(ROWID=ROWID)
  85.   10 - filter("B_CITY"."NBBH" IS NOT NULL)
  86.   11 - filter("B_CITY"."GNGJ"='1')
  87.   12 - filter(("CXDATETIME">=TO_DATE('2015-02-15 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND "CXDATETIME"<=TO_DATE('2015-03-04 11:33:21', 'yyyy-mm-dd
  88.               hh24:mi:ss')))

  89. Column Projection Information (identified by operation id):
  90. -----------------------------------------------------------

  91.    1 - "NUM"[NUMBER,22], "from$_subquery$_001"."DDCITY"[VARCHAR2,500], "from$_subquery$_001"."CXCS"[NUMBER,22]
  92.    2 - "T"."DDCITY"[VARCHAR2,500], "T"."CXCS"[NUMBER,22], ROWNUM[4]
  93.    3 - "T"."DDCITY"[VARCHAR2,500], "T"."CXCS"[NUMBER,22]
  94.    4 - "T"."DDCITY"[VARCHAR2,500], "T"."CXCS"[NUMBER,22]
  95.    5 - (#keys=1) SUM("CXCS")[22], "DDCITY"[VARCHAR2,500]
  96.    6 - "DDCITY"[VARCHAR2,500], SUM("CXCS")[22]
  97.    7 - (#keys=1) "DDCITY"[VARCHAR2,500], "CXCS"[NUMBER,22]
  98.    8 - "B_CITY"."GNGJ"[VARCHAR2,1], "B_CITY"."NBBH"[VARCHAR2,10]
  99.    9 - (#keys=1) "B_CITY"."NBBH"[VARCHAR2,10], "B_CITY"."GNGJ"[VARCHAR2,1]
  100.   10 - ROWID[ROWID,10], "B_CITY"."NBBH"[VARCHAR2,10]
  101.   11 - ROWID[ROWID,10], "B_CITY"."GNGJ"[VARCHAR2,1]
  102.   12 - "DDCITY"[VARCHAR2,500], "CXCS"[NUMBER,22]


  103. 92 rows selected.

  104. SQL>
复制代码


论坛徽章:
68
2012新春纪念徽章
日期:2012-01-04 11:51:22奥运会纪念徽章:举重
日期:2012-08-02 22:17:14ITPUB 11周年纪念徽章
日期:2012-10-09 18:07:312013年新春福章
日期:2013-02-25 14:51:24慢羊羊
日期:2015-03-04 14:51:352015年新春福章
日期:2015-03-06 11:57:312015年新春福章
日期:2015-06-11 12:54:06
发表于 2015-3-4 15:35 | 显示全部楼层
字段 NBBH和GNGJ选择率怎么样?

使用道具 举报

回复
论坛徽章:
68
2012新春纪念徽章
日期:2012-01-04 11:51:22奥运会纪念徽章:举重
日期:2012-08-02 22:17:14ITPUB 11周年纪念徽章
日期:2012-10-09 18:07:312013年新春福章
日期:2013-02-25 14:51:24慢羊羊
日期:2015-03-04 14:51:352015年新春福章
日期:2015-03-06 11:57:312015年新春福章
日期:2015-06-11 12:54:06
发表于 2015-3-4 15:36 | 显示全部楼层
howard_zhang 发表于 2015-3-4 15:35
字段 NBBH和GNGJ选择率怎么样?

select count(distinct(NBBH)) from b_city;
select count(distinct(GNGJ)) from b_city;
select count(*) from b_city;

使用道具 举报

回复
论坛徽章:
16
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:53ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:192011新春纪念徽章
日期:2011-02-18 11:43:332012新春纪念徽章
日期:2012-01-04 11:54:26奥运会纪念徽章:皮划艇激流回旋
日期:2012-08-23 11:18:00奥运会纪念徽章:田径
日期:2012-10-10 16:06:232010广州亚运会纪念徽章:跆拳道
日期:2011-04-22 13:13:28紫蛋头
日期:2012-05-25 10:31:30灰彻蛋
日期:2012-11-02 16:24:22
发表于 2015-3-4 16:03 | 显示全部楼层
性能瓶颈主要来自AVH_CXCS表的全表扫。建议从语句过滤条件中找到AVH_CXCS表的过滤条件,根据过滤条件的数据筛选性设置索引来提高效率。

使用道具 举报

回复
认证徽章
论坛徽章:
12
美羊羊
日期:2015-03-27 11:38:482015年新春福章
日期:2015-03-06 11:59:47暖羊羊
日期:2015-03-04 14:54:57马上加薪
日期:2014-12-10 11:06:57马上有车
日期:2014-10-23 20:12:04祖国65周年纪念徽章
日期:2014-10-10 17:11:38青年奥林匹克运动会-竞技体操
日期:2014-09-22 13:45:05优秀写手
日期:2013-12-18 09:29:09奔驰
日期:2013-10-30 15:06:55雪佛兰
日期:2013-08-28 20:48:07
发表于 2015-3-4 16:17 | 显示全部楼层
本帖最后由 29782690 于 2015-3-4 16:39 编辑

你这执行计划都不对,应该走嵌套循环。b_city 表的统计信息也收集了么?

使用道具 举报

回复
论坛徽章:
25
双子座
日期:2015-07-16 14:18:24蒙奇·D·路飞
日期:2016-12-31 10:56:17乌索普
日期:2016-11-17 17:21:49妮可·罗宾
日期:2016-06-26 22:18:42白羊座
日期:2016-05-12 14:53:36双子座
日期:2016-03-21 18:25:51水瓶座
日期:2016-03-09 15:54:47水瓶座
日期:2016-01-26 10:44:56双鱼座
日期:2015-08-20 10:30:26蒙奇·D·路飞
日期:2017-03-20 10:23:01
 楼主| 发表于 2015-3-4 17:27 | 显示全部楼层
howard_zhang 发表于 2015-3-4 15:36
select count(distinct(NBBH)) from b_city;
select count(distinct(GNGJ)) from b_city;
select count ...

SQL>
SQL> select count(distinct(NBBH)) from b_city;
COUNT(DISTINCT(NBBH))
---------------------
                 4637
SQL> select count(distinct(GNGJ)) from b_city;
COUNT(DISTINCT(GNGJ))
---------------------
                    2
SQL> select count(*) from b_city;
  COUNT(*)
----------
      5262

SQL>

使用道具 举报

回复
论坛徽章:
3
懒羊羊
日期:2015-03-04 14:52:112015年新春福章
日期:2015-03-06 11:58:18天蝎座
日期:2016-05-14 12:00:32
发表于 2015-3-4 23:36 | 显示全部楼层
from (select rownum num, t.* ...
rownum 不能這樣用, 只能放置最外層.
  1 - filter("NUM"<=100)
  3 - filter(ROWNUM>0)
  12 - filter(("CXDATETIME">=TO_DATE('2015-02-15 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND "CXDATETIME"<=TO_DATE('2015-03-04 11:33:21', 'yyyy-mm-dd
              hh24:mi:ss')))
CXDATETIME 失效中, 是否有 index.

解開這個謎, 先看看這樣SQL會是什麼樣Plan.
select DDCITY, sum(cxcs) cxcs
                  from avh_cxcs, b_city
                 where cxdatetime >= to_date('2015-02-15 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
                   and cxdatetime <= to_date('2015-03-04 11:33:21', 'yyyy-mm-dd hh24:mi:ss')
                   and DDCITY = b_city.NBBH
                   and b_city.gngj = '1'
                 group by DDCITY
                 order by cxcs desc;

你就會知道是 rownum  在作怪.

使用道具 举报

回复
论坛徽章:
25
双子座
日期:2015-07-16 14:18:24蒙奇·D·路飞
日期:2016-12-31 10:56:17乌索普
日期:2016-11-17 17:21:49妮可·罗宾
日期:2016-06-26 22:18:42白羊座
日期:2016-05-12 14:53:36双子座
日期:2016-03-21 18:25:51水瓶座
日期:2016-03-09 15:54:47水瓶座
日期:2016-01-26 10:44:56双鱼座
日期:2015-08-20 10:30:26蒙奇·D·路飞
日期:2017-03-20 10:23:01
 楼主| 发表于 2015-3-5 14:57 | 显示全部楼层
taomct 发表于 2015-3-4 23:36
from (select rownum num, t.* ...
rownum 不能這樣用, 只能放置最外層.
  1 - filter("NUM"0)
  1. 去掉rownum还是一样的情况。
  2. 应该是时间范围返回的行数占总行数比率太高,导致走TABLE ACCESS FULL     | AVH_CXCS。谢谢了。
  3. SQL> select * from table(dbms_xplan.display_cursor(null,null,'ADVANCED ALLSTATS LAST PEEKED_BINDS'));

  4. PLAN_TABLE_OUTPUT
  5. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  6. SQL_ID  0z74atuvpw9ah, child number 0
  7. -------------------------------------
  8. select DDCITY, sum(cxcs) cxcs                   from avh_cxcs, b_city                  where cxdatetime >= to_date('2015-02-15 00:00:00', 'yyyy-mm-dd
  9. hh24:mi:ss')                    and cxdatetime <= to_date('2015-03-04 11:33:21', 'yyyy-mm-dd hh24:mi:ss')                    and DDCITY = b_city.NBBH
  10.               and b_city.gngj = '1'                  group by DDCITY                  order by cxcs desc

  11. Plan hash value: 2031797901

  12. -------------------------------------------------------------------------------------------------------------------------------------------------------------------
  13. | Id  | Operation                 | Name             | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |  OMem |  1Mem | Used-Mem |
  14. -------------------------------------------------------------------------------------------------------------------------------------------------------------------
  15. |   1 |  SORT ORDER BY            |                  |      1 |    218 |  4796 | 11589   (4)| 00:02:20 |    197 |00:00:08.06 |   51327 |  9216 |  9216 | 8192  (0)|
  16. |   2 |   HASH GROUP BY           |                  |      1 |    218 |  4796 | 11589   (4)| 00:02:20 |    197 |00:00:08.06 |   51327 |       |       |          |
  17. |*  3 |    HASH JOIN              |                  |      1 |    459K|  9869K| 11496   (4)| 00:02:18 |   3769K|00:00:04.51 |   51327 |  1348K|  1348K| 1223K (0)|
  18. |*  4 |     VIEW                  | index$_join$_002 |      1 |    546 |  3276 |    36   (3)| 00:00:01 |    213 |00:00:00.02 |      36 |       |       |          |
  19. |*  5 |      HASH JOIN            |                  |      1 |        |       |            |          |    213 |00:00:00.02 |      36 |  1078K|  1078K| 1667K (0)|
  20. |*  6 |       INDEX FAST FULL SCAN| IDX_CITY         |      1 |    546 |  3276 |    14   (0)| 00:00:01 |   4637 |00:00:00.01 |      15 |       |       |          |
  21. |*  7 |       INDEX FAST FULL SCAN| B_CITY_INDEX     |      1 |    546 |  3276 |    21   (0)| 00:00:01 |    620 |00:00:00.01 |      21 |       |       |          |
  22. |*  8 |     TABLE ACCESS FULL     | AVH_CXCS         |      1 |   3901K|    59M| 11414   (3)| 00:02:17 |   3888K|00:00:00.72 |   51291 |       |       |          |
  23. -------------------------------------------------------------------------------------------------------------------------------------------------------------------

  24. Query Block Name / Object Alias (identified by operation id):
  25. -------------------------------------------------------------

  26.    1 - SEL$1
  27.    4 - SEL$FD64DD72 / B_CITY@SEL$1
  28.    5 - SEL$FD64DD72
  29.    6 - SEL$FD64DD72 / indexjoin$_alias$_001@SEL$FD64DD72
  30.    7 - SEL$FD64DD72 / indexjoin$_alias$_002@SEL$FD64DD72
  31.    8 - SEL$1        / AVH_CXCS@SEL$1

  32. Outline Data
  33. -------------

  34.   /*+
  35.       BEGIN_OUTLINE_DATA
  36.       IGNORE_OPTIM_EMBEDDED_HINTS
  37.       OPTIMIZER_FEATURES_ENABLE('10.2.0.1')
  38.       ALL_ROWS
  39.       OUTLINE_LEAF(@"SEL$FD64DD72")
  40.       OUTLINE_LEAF(@"SEL$1")
  41.       OUTLINE(@"SEL$1")
  42.       INDEX_JOIN(@"SEL$1" "B_CITY"@"SEL$1" ("B_CITY"."NBBH") ("B_CITY"."SZGJ" "B_CITY"."GNGJ"))
  43.       FULL(@"SEL$1" "AVH_CXCS"@"SEL$1")
  44.       LEADING(@"SEL$1" "B_CITY"@"SEL$1" "AVH_CXCS"@"SEL$1")
  45.       USE_HASH(@"SEL$1" "AVH_CXCS"@"SEL$1")
  46.       END_OUTLINE_DATA
  47.   */

  48. Predicate Information (identified by operation id):
  49. ---------------------------------------------------

  50.    3 - access("DDCITY"="B_CITY"."NBBH")
  51.    4 - filter(("B_CITY"."GNGJ"='1' AND "B_CITY"."NBBH" IS NOT NULL))
  52.    5 - access(ROWID=ROWID)
  53.    6 - filter("B_CITY"."NBBH" IS NOT NULL)
  54.    7 - filter("B_CITY"."GNGJ"='1')
  55.    8 - filter(("CXDATETIME">=TO_DATE('2015-02-15 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND "CXDATETIME"<=TO_DATE('2015-03-04 11:33:21', 'yyyy-mm-dd
  56.               hh24:mi:ss')))

  57. Column Projection Information (identified by operation id):
  58. -----------------------------------------------------------

  59.    1 - (#keys=1) SUM("CXCS")[22], "DDCITY"[VARCHAR2,500]
  60.    2 - "DDCITY"[VARCHAR2,500], SUM("CXCS")[22]
  61.    3 - (#keys=1) "DDCITY"[VARCHAR2,500], "CXCS"[NUMBER,22]
  62.    4 - "B_CITY"."GNGJ"[VARCHAR2,1], "B_CITY"."NBBH"[VARCHAR2,10]
  63.    5 - (#keys=1) "B_CITY"."NBBH"[VARCHAR2,10], "B_CITY"."GNGJ"[VARCHAR2,1]
  64.    6 - ROWID[ROWID,10], "B_CITY"."NBBH"[VARCHAR2,10]
  65.    7 - ROWID[ROWID,10], "B_CITY"."GNGJ"[VARCHAR2,1]
  66.    8 - "DDCITY"[VARCHAR2,500], "CXCS"[NUMBER,22]


  67. 72 rows selected.

  68. SQL> select index_name,status from user_indexes where table_name='AVH_CXCS';

  69. INDEX_NAME                                                   STATUS
  70. ------------------------------------------------------------ ----------------
  71. IDX_AVH_CXCS_CFDDDATE                                        VALID
  72. IDX_AVH_CXCS_CXDATETIME                                      VALID
  73. PK_AVH_CXCS                                                  VALID


  74. SQL> select count(*) from AVH_CXCS ;

  75.   COUNT(*)
  76. ----------
  77.    6762504

  78. SQL> select count(*) from AVH_CXCS where cxdatetime >= to_date('2015-02-15 00:00:00', 'yyyy-mm-dd hh24:mi:ss') and cxdatetime <= to_date('2015-03-04 11:33:21', 'yyyy-mm-dd hh24:mi:ss');

  79.   COUNT(*)
  80. ----------
  81.    3888919

  82. SQL>


复制代码

使用道具 举报

回复
论坛徽章:
3
懒羊羊
日期:2015-03-04 14:52:112015年新春福章
日期:2015-03-06 11:58:18天蝎座
日期:2016-05-14 12:00:32
发表于 2015-3-6 04:11 | 显示全部楼层
看到1
   3 - access("DDCITY"="B_CITY"."NBBH")
   4 - filter(("B_CITY"."GNGJ"='1' AND "B_CITY"."NBBH" IS NOT NULL))
   5 - access(ROWID=ROWID)
   6 - filter("B_CITY"."NBBH" IS NOT NULL)
   7 - filter("B_CITY"."GNGJ"='1')
   8 - filter(("CXDATETIME">=TO_DATE('2015-02-15 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND "CXDATETIME"<=TO_DATE('2015-03-04 11:33:21', 'yyyy-mm-dd
              hh24:mi:ss')))
看到2
|*  8 |     TABLE ACCESS FULL     | AVH_CXCS         |      1 |   3901K|    59M| 11414   (3)| 00:02:17 |   3888K|00:00:00.72 |   51291 |

結論:
AVH_CXCS 在作怪.
"B_CITY"."NBBH" 這個欄位允取 null 導致新的 index 是 (IDX_CITY + B_CITY_INDEX 欄位) 方式, 這個不是主要因素, 可以不用理他.
資料是 full sacn 由 8-  AVH_CXCS  走到 3- HASH JOIN ,
你的 AVH_CXCS index 缺 (DDCITY , CXDATETIME) 建立好了再看看 Plan.
如果 8-  AVH_CXCS 還是 full sacn 就表示 要刪除 (DDCITY , CXDATETIME)  index 要建立 (DDCITY , CXDATETIME, CXCS) 這個表示比較沒有彈性 index.



使用道具 举报

回复
论坛徽章:
25
双子座
日期:2015-07-16 14:18:24蒙奇·D·路飞
日期:2016-12-31 10:56:17乌索普
日期:2016-11-17 17:21:49妮可·罗宾
日期:2016-06-26 22:18:42白羊座
日期:2016-05-12 14:53:36双子座
日期:2016-03-21 18:25:51水瓶座
日期:2016-03-09 15:54:47水瓶座
日期:2016-01-26 10:44:56双鱼座
日期:2015-08-20 10:30:26蒙奇·D·路飞
日期:2017-03-20 10:23:01
 楼主| 发表于 2015-3-6 10:06 | 显示全部楼层
taomct 发表于 2015-3-6 04:11
看到1
   3 - access("DDCITY"="B_CITY"."NBBH")
   4 - filter(("B_CITY"."GNGJ"='1' AND "B_CITY"."NBB ...

表AVH_CXCS加index (DDCITY , CXDATETIME, CXCS) 之后,走索引了(INDEX FAST FULL SCAN)。
cost下来了,返回时间差不多。谢谢了。
8 - filter(("CXDATETIME">=TO_DATE('2015-02-15 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND "CXDATETIME"<=TO_DATE('2015-03-04 11:33:21', 'yyyy-mm-dd
              hh24:mi:ss')))

  1. create index idx_avh_cxcs_dcc on avh_cxcs (DDCITY , CXDATETIME, CXCS) nologging;
  2. SQL> select * from table(dbms_xplan.display_cursor(null,null,'ADVANCED ALLSTATS LAST PEEKED_BINDS'));

  3. PLAN_TABLE_OUTPUT
  4. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  5. SQL_ID  3x3waq1kk314b, child number 0
  6. -------------------------------------
  7. select DDCITY, sum(cxcs) cxcs   from avh_cxcs, b_city  where cxdatetime >= to_date('2015-02-15 00:00:00','yyyy-mm-dd hh24:mi:ss')    and cxdatetime <=
  8. to_date('2015-03-04 11:33:21', 'yyyy-mm-dd hh24:mi:ss')    and DDCITY = b_city.NBBH    and b_city.gngj = '1'  group by DDCITY  order by cxcs desc

  9. Plan hash value: 1091688607

  10. -------------------------------------------------------------------------------------------------------------------------------------------------------------------
  11. | Id  | Operation                 | Name             | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |  OMem |  1Mem | Used-Mem |
  12. -------------------------------------------------------------------------------------------------------------------------------------------------------------------
  13. |   1 |  SORT ORDER BY            |                  |      1 |    221 |  4862 |  5890   (6)| 00:01:11 |    197 |00:00:10.41 |   25579 |  9216 |  9216 | 8192  (0)|
  14. |   2 |   HASH GROUP BY           |                  |      1 |    221 |  4862 |  5890   (6)| 00:01:11 |    197 |00:00:10.41 |   25579 |       |       |          |
  15. |*  3 |    HASH JOIN              |                  |      1 |    440K|  9457K|  5801   (4)| 00:01:10 |   3769K|00:00:03.78 |   25579 |  1348K|  1348K| 1223K (0)|
  16. |*  4 |     VIEW                  | index$_join$_002 |      1 |    546 |  3276 |    36   (3)| 00:00:01 |    213 |00:00:00.01 |      36 |       |       |          |
  17. |*  5 |      HASH JOIN            |                  |      1 |        |       |            |          |    213 |00:00:00.01 |      36 |  1078K|  1078K| 1667K (0)|
  18. |*  6 |       INDEX FAST FULL SCAN| IDX_CITY         |      1 |    546 |  3276 |    14   (0)| 00:00:01 |   4637 |00:00:00.01 |      15 |       |       |          |
  19. |*  7 |       INDEX FAST FULL SCAN| B_CITY_INDEX     |      1 |    546 |  3276 |    21   (0)| 00:00:01 |    620 |00:00:00.01 |      21 |       |       |          |
  20. |*  8 |     INDEX FAST FULL SCAN  | IDX_AVH_CXCS_DCC |      1 |   3739K|    57M|  5721   (4)| 00:01:09 |   3888K|00:00:00.01 |   25543 |       |       |          |
  21. -------------------------------------------------------------------------------------------------------------------------------------------------------------------

  22. Query Block Name / Object Alias (identified by operation id):
  23. -------------------------------------------------------------

  24.    1 - SEL$1
  25.    4 - SEL$FD64DD72 / B_CITY@SEL$1
  26.    5 - SEL$FD64DD72
  27.    6 - SEL$FD64DD72 / indexjoin$_alias$_001@SEL$FD64DD72
  28.    7 - SEL$FD64DD72 / indexjoin$_alias$_002@SEL$FD64DD72
  29.    8 - SEL$1        / AVH_CXCS@SEL$1

  30. Outline Data
  31. -------------

  32.   /*+
  33.       BEGIN_OUTLINE_DATA
  34.       IGNORE_OPTIM_EMBEDDED_HINTS
  35.       OPTIMIZER_FEATURES_ENABLE('10.2.0.1')
  36.       ALL_ROWS
  37.       OUTLINE_LEAF(@"SEL$FD64DD72")
  38.       OUTLINE_LEAF(@"SEL$1")
  39.       OUTLINE(@"SEL$1")
  40.       INDEX_JOIN(@"SEL$1" "B_CITY"@"SEL$1" ("B_CITY"."NBBH") ("B_CITY"."SZGJ" "B_CITY"."GNGJ"))
  41.       INDEX_FFS(@"SEL$1" "AVH_CXCS"@"SEL$1" ("AVH_CXCS"."DDCITY" "AVH_CXCS"."CXDATETIME" "AVH_CXCS"."CXCS"))
  42.       LEADING(@"SEL$1" "B_CITY"@"SEL$1" "AVH_CXCS"@"SEL$1")
  43.       USE_HASH(@"SEL$1" "AVH_CXCS"@"SEL$1")
  44.       END_OUTLINE_DATA
  45.   */

  46. Predicate Information (identified by operation id):
  47. ---------------------------------------------------

  48.    3 - access("DDCITY"="B_CITY"."NBBH")
  49.    4 - filter(("B_CITY"."GNGJ"='1' AND "B_CITY"."NBBH" IS NOT NULL))
  50.    5 - access(ROWID=ROWID)
  51.    6 - filter("B_CITY"."NBBH" IS NOT NULL)
  52.    7 - filter("B_CITY"."GNGJ"='1')
  53.    8 - filter(("CXDATETIME">=TO_DATE('2015-02-15 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND "CXDATETIME"<=TO_DATE('2015-03-04 11:33:21', 'yyyy-mm-dd
  54.               hh24:mi:ss')))

  55. Column Projection Information (identified by operation id):
  56. -----------------------------------------------------------

  57.    1 - (#keys=1) SUM("CXCS")[22], "DDCITY"[VARCHAR2,500]
  58.    2 - "DDCITY"[VARCHAR2,500], SUM("CXCS")[22]
  59.    3 - (#keys=1) "DDCITY"[VARCHAR2,500], "CXCS"[NUMBER,22]
  60.    4 - "B_CITY"."GNGJ"[VARCHAR2,1], "B_CITY"."NBBH"[VARCHAR2,10]
  61.    5 - (#keys=1) "B_CITY"."NBBH"[VARCHAR2,10], "B_CITY"."GNGJ"[VARCHAR2,1]
  62.    6 - ROWID[ROWID,10], "B_CITY"."NBBH"[VARCHAR2,10]
  63.    7 - ROWID[ROWID,10], "B_CITY"."GNGJ"[VARCHAR2,1]
  64.    8 - "DDCITY"[VARCHAR2,500], "CXCS"[NUMBER,22]


  65. 71 rows selected.
复制代码

使用道具 举报

回复

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

本版积分规则 发表回复

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