Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

87

积分

0

好友

3

主题
1#
发表于 2012-3-27 10:44:16 | 查看: 4259| 回复: 2
SQL

  1. select count(*)
  2.   from ds_wallcontent_base a,
  3.        ds_wallcontent_info b,
  4.        ds_user_info        c,
  5.        post_xy_ext         d,
  6.        post_xy_info        e,
  7.        xy_theme_info       f,
  8.        XY_SCHOOL_INFO      g
  9. where a.baseid = b.baseid
  10.    and a.userid = c.userid
  11.    and a.baseid = d.postid
  12.    and e.schoolid = g.SCHOOLID
  13.    and d.id = e.id
  14.    and e.themeid = f.themeid
  15.    and a.status = '1'
  16.    and b.status = '1'
  17.    and c.is_valid = '0'
  18.    and e.is_valid = '1'
  19.    and f.themeid = '-1'
  20.     or '3' = '3'
复制代码


执行计划


  1. PLAN_TABLE_OUTPUT
  2. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  3. Plan hash value: 2415169629
  4. --------------------------------------------------------------------------------------------------
  5. | Id  | Operation                  | Name                | Rows  | Bytes | Cost (%CPU)| Time     |
  6. --------------------------------------------------------------------------------------------------
  7. |   0 | SELECT STATEMENT           |                     |     1 |    61 |    18E  (0)|999:59:59 |
  8. |   1 |  SORT AGGREGATE            |                     |     1 |    61 |            |          |
  9. |   2 |   MERGE JOIN CARTESIAN     |                     |    18E|    15E|    18E  (0)|999:59:59 |
  10. |   3 |    MERGE JOIN CARTESIAN    |                     |    18E|    15E|    18E  (0)|999:59:59 |
  11. |   4 |     MERGE JOIN CARTESIAN   |                     |    18E|    15E|   224P  (1)|999:59:59 |
  12. |   5 |      MERGE JOIN CARTESIAN  |                     |  2750T|    83P|  5139G  (2)|999:59:59 |
  13. PLAN_TABLE_OUTPUT
  14. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  15. |   6 |       MERGE JOIN CARTESIAN |                     |    95G|  1685G|   241M  (2)|803:27:53 |
  16. |   7 |        MERGE JOIN CARTESIAN|                     |   332K|  3567K|  3479   (1)| 00:00:42 |
  17. |   8 |         INDEX FULL SCAN    | PK_XY_THEME_INFO    |     7 |    21 |     1   (0)| 00:00:01 |
  18. |   9 |         BUFFER SORT        |                     | 47445 |   370K|  3478   (1)| 00:00:42 |
  19. |  10 |          TABLE ACCESS FULL | DS_WALLCONTENT_INFO | 47445 |   370K|   497   (1)| 00:00:06 |
  20. |  11 |        BUFFER SORT         |                     |   286K|  2240K|   241M  (2)|803:27:47 |
  21. |  12 |         TABLE ACCESS FULL  | DS_USER_INFO        |   286K|  2240K|   726   (2)| 00:00:09 |
  22. |  13 |       BUFFER SORT          |                     | 28877 |   423K|  5139G  (2)|999:59:59 |
  23. |  14 |        TABLE ACCESS FULL   | POST_XY_INFO        | 28877 |   423K|    54   (2)| 00:00:01 |
  24. |  15 |      BUFFER SORT           |                     | 49347 |   674K|   224P  (1)|999:59:59 |
  25. |  16 |       TABLE ACCESS FULL    | DS_WALLCONTENT_BASE | 49347 |   674K|    82   (2)| 00:00:01 |
  26. PLAN_TABLE_OUTPUT
  27. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  28. |  17 |     BUFFER SORT            |                     |  3091 | 12364 |    18E  (0)|999:59:59 |
  29. |  18 |      INDEX FAST FULL SCAN  | PK_XY_SCHOOL_INFO   |  3091 | 12364 |     2   (0)| 00:00:01 |
  30. |  19 |    BUFFER SORT             |                     | 29429 |   258K|    18E  (0)|999:59:59 |
  31. |  20 |     TABLE ACCESS FULL      | POST_XY_EXT         | 29429 |   258K|    15   (7)| 00:00:01 |
  32. --------------------------------------------------------------------------------------------------
  33. 27 rows selected.

  34. Execution Plan
  35. ----------------------------------------------------------
  36. Plan hash value: 2137789089
  37. ---------------------------------------------------------------------------------------------
  38. | Id  | Operation                         | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
  39. ---------------------------------------------------------------------------------------------
  40. |   0 | SELECT STATEMENT                  |         |  8168 | 16336 |    24   (0)| 00:00:01 |
  41. |   1 |  COLLECTION ITERATOR PICKLER FETCH| DISPLAY |       |       |            |          |
  42. ---------------------------------------------------------------------------------------------

  43. Statistics
  44. ----------------------------------------------------------
  45.         729  recursive calls
  46.          26  db block gets
  47.         992  consistent gets
  48.           0  physical reads
  49.           0  redo size
  50.        3344  bytes sent via SQL*Net to client
  51.         503  bytes received via SQL*Net from client
  52.           3  SQL*Net roundtrips to/from client
  53.          27  sorts (memory)
  54.           0  sorts (disk)
  55.          27  rows processed
复制代码


各表的数据行数
  1. ds_wallcontent_info 47694
  2. ds_wallcontent_base 49598
  3. ds_user_info 287128
  4. post_xy_ext 29240
  5. post_xy_info 29240
  6. xy_theme_info 7
  7. XY_SCHOOL_INFO 3091
复制代码
2#
发表于 2012-3-30 20:53:49
select count(*)
  from ds_wallcontent_base a,
       ds_wallcontent_info b,
       ds_user_info        c,
       post_xy_ext         d,
       post_xy_info        e,
       xy_theme_info       f,
       XY_SCHOOL_INFO      g
where a.baseid = b.baseid
   and a.userid = c.userid
   and a.baseid = d.postid
   and e.schoolid = g.SCHOOLID
   and d.id = e.id
   and e.themeid = f.themeid
   and a.status = '1'
   and b.status = '1'
   and c.is_valid = '0'
   and e.is_valid = '1'
   and f.themeid = '-1'
    or '3' = '3'


这个查询类似于 星型查询, ds_user_inf充当fact table, 考虑使用星型转换 优化该SQL:


Oracle优化器:星型转换 http://www.oracledatabase12g.com ... BD%AC%E6%8D%A2.html

回复 只看该作者 道具 举报

3#
发表于 2012-3-31 14:00:53
or '3' = '3'不是成了笛卡儿连接了?

回复 只看该作者 道具 举报

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

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-24 10:16 , Processed in 0.060338 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569