楼主: 〇〇

[转载] 趣味题

[复制链接]
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
71#
 楼主| 发表于 2010-6-13 07:34 | 只看该作者
iot很好,复合主键还是要回表

  1. SQL> set autot off
  2. SQL> drop table t purge;

  3. 表已删除。

  4. 已用时间:  00: 00: 00.06
  5. SQL> create table t(x char(4),n number(5,0)PRIMARY KEY)organization index ;

  6. 表已创建。

  7. 已用时间:  00: 00: 00.03
  8. SQL> insert into t select x,to_number(x,'fm0xxx')n from(SELECT REPLACE(SYS_CONNECT_BY_PATH(rn,','),',') x
  9.   2               FROM (SELECT to_char(ROWNUM-1,'fmx') rn FROM DUAL CONNECT BY ROWNUM<=16)
  10.   3              WHERE LEVEL=4
  11.   4              CONNECT BY NOCYCLE rn<> PRIOR rn AND LEVEL<=4
  12.   5            );

  13. 已创建43680行。

  14. 已用时间:  00: 00: 00.65
  15. SQL> create unique index idxtx on t(x);

  16. 索引已创建。

  17. 已用时间:  00: 00: 00.10
  18. SQL> create unique index idxtn on t(n);
  19. create unique index idxtn on t(n)
  20.                                *
  21. 第 1 行出现错误:
  22. ORA-01408: 此列列表已索引


  23. 已用时间:  00: 00: 00.01
  24. SQL> create unique index idxtnx on t(n,x);

  25. 索引已创建。

  26. 已用时间:  00: 00: 00.10
  27. SQL> drop index idxtx;

  28. 索引已删除。

  29. 已用时间:  00: 00: 00.02
  30. SQL> drop index idxtnx purge;
  31. drop index idxtnx purge
  32.                   *
  33. 第 1 行出现错误:
  34. ORA-00933: SQL 命令未正确结束


  35. 已用时间:  00: 00: 00.00
  36. SQL> drop index idxtnx;

  37. 索引已删除。

  38. 已用时间:  00: 00: 00.02
  39. SQL> exec DBMS_STATS.GATHER_TABLE_STATS('LT','T');

  40. PL/SQL 过程已成功完成。

  41. 已用时间:  00: 00: 00.14
  42. SQL> set autot on
  43. SQL> show arraysize
  44. arraysize 15
  45. SQL> select a.x||'+'||b.x||'='||to_char(a.n+b.n,'fm0xxx')s
  46.   2  from t a,t b --,t c
  47.   3  where a.n<to_number('8000','fm0xxx')
  48.   4        and a.n<b.n
  49.   5        AND a.n+b.n <=to_number('fedc','fm0xxx')
  50.   6        and length(translate('0123456789abcdef','$'||a.x||b.x||to_char(a.n+b.n,'fm0xxx'),'$'))=4
  51.   7        and rownum<=10;

  52. S
  53. ---------------
  54. 0c63+17fb=245e
  55. 0c93+17fb=248e
  56. 0ca3+17fb=249e
  57. 0d93+17fb=258e
  58. 0da3+17fb=259e
  59. 0d67+1834=259b
  60. 0d6a+1834=259e
  61. 0d6b+1834=259f
  62. 0d7b+1834=25af
  63. 0d96+1834=25ca

  64. 已选择10行。

  65. 已用时间:  00: 00: 14.86

  66. 执行计划
  67. ----------------------------------------------------------
  68. Plan hash value: 3738967521

  69. --------------------------------------------------------------------------------------------
  70. | Id  | Operation              | Name              | Rows  | Bytes | Cost (%CPU)| Time     |
  71. --------------------------------------------------------------------------------------------
  72. |   0 | SELECT STATEMENT       |                   |    10 |   180 |    21   (0)| 00:00:01 |
  73. |*  1 |  COUNT STOPKEY         |                   |       |       |            |          |
  74. |   2 |   NESTED LOOPS         |                   |    10 |   180 |    21   (0)| 00:00:01 |
  75. |   3 |    INDEX FAST FULL SCAN| SYS_IOT_TOP_89130 |    19 |   171 |     2   (0)| 00:00:01 |
  76. |*  4 |    INDEX RANGE SCAN    | SYS_IOT_TOP_89130 |     1 |     9 |     1   (0)| 00:00:01 |
  77. --------------------------------------------------------------------------------------------

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

  80.    1 - filter(ROWNUM<=10)
  81.    4 - access("A"."N"<TO_NUMBER('8000','fm0xxx'))
  82.        filter("A"."N"<"B"."N" AND "A"."N"+"B"."N"<=TO_NUMBER('fedc','fm0xxx') AND
  83.               LENGTH(TRANSLATE('0123456789abcdef','$'||"A"."X"||"B"."X"||TO_CHAR("A"."N"+"B"."N",'
  84.               fm0xxx'),'$'))=4)


  85. 统计信息
  86. ----------------------------------------------------------
  87.           1  recursive calls
  88.           0  db block gets
  89.       91469  consistent gets
  90.           0  physical reads
  91.           0  redo size
  92.         755  bytes sent via SQL*Net to client
  93.         520  bytes received via SQL*Net from client
  94.           2  SQL*Net roundtrips to/from client
  95.           0  sorts (memory)
  96.           0  sorts (disk)
  97.          10  rows processed

  98. SQL> select /*use_merge(a b)*/a.x||'+'||b.x||'='||to_char(a.n+b.n,'fm0xxx')s
  99.   2  from t a,t b --,t c
  100.   3  where a.n<to_number('8000','fm0xxx')
  101.   4        and a.n<b.n
  102.   5        AND a.n+b.n <=to_number('fedc','fm0xxx')
  103.   6        and length(translate('0123456789abcdef','$'||a.x||b.x||to_char(a.n+b.n,'fm0xxx'),'$'))=4
  104.   7        and rownum<=10;

  105. S
  106. ---------------
  107. 0c63+17fb=245e
  108. 0c93+17fb=248e
  109. 0ca3+17fb=249e
  110. 0d93+17fb=258e
  111. 0da3+17fb=259e
  112. 0d67+1834=259b
  113. 0d6a+1834=259e
  114. 0d6b+1834=259f
  115. 0d7b+1834=25af
  116. 0d96+1834=25ca

  117. 已选择10行。

  118. 已用时间:  00: 00: 14.77

  119. 执行计划
  120. ----------------------------------------------------------
  121. Plan hash value: 3738967521

  122. --------------------------------------------------------------------------------------------
  123. | Id  | Operation              | Name              | Rows  | Bytes | Cost (%CPU)| Time     |
  124. --------------------------------------------------------------------------------------------
  125. |   0 | SELECT STATEMENT       |                   |    10 |   180 |    21   (0)| 00:00:01 |
  126. |*  1 |  COUNT STOPKEY         |                   |       |       |            |          |
  127. |   2 |   NESTED LOOPS         |                   |    10 |   180 |    21   (0)| 00:00:01 |
  128. |   3 |    INDEX FAST FULL SCAN| SYS_IOT_TOP_89130 |    19 |   171 |     2   (0)| 00:00:01 |
  129. |*  4 |    INDEX RANGE SCAN    | SYS_IOT_TOP_89130 |     1 |     9 |     1   (0)| 00:00:01 |
  130. --------------------------------------------------------------------------------------------

  131. Predicate Information (identified by operation id):
  132. ---------------------------------------------------

  133.    1 - filter(ROWNUM<=10)
  134.    4 - access("A"."N"<TO_NUMBER('8000','fm0xxx'))
  135.        filter("A"."N"<"B"."N" AND "A"."N"+"B"."N"<=TO_NUMBER('fedc','fm0xxx') AND
  136.               LENGTH(TRANSLATE('0123456789abcdef','$'||"A"."X"||"B"."X"||TO_CHAR("A"."N"+"B"."N",'
  137.               fm0xxx'),'$'))=4)


  138. 统计信息
  139. ----------------------------------------------------------
  140.           1  recursive calls
  141.           0  db block gets
  142.       91469  consistent gets
  143.           0  physical reads
  144.           0  redo size
  145.         755  bytes sent via SQL*Net to client
  146.         520  bytes received via SQL*Net from client
  147.           2  SQL*Net roundtrips to/from client
  148.           0  sorts (memory)
  149.           0  sorts (disk)
  150.          10  rows processed

  151. SQL> set autot off
  152. SQL> drop table t purge;

  153. 表已删除。

  154. 已用时间:  00: 00: 00.02
  155. SQL> create table t(x char(4),n number(5,0));

  156. 表已创建。

  157. 已用时间:  00: 00: 00.01
  158. SQL> insert into t select x,to_number(x,'fm0xxx')n from(SELECT REPLACE(SYS_CONNECT_BY_PATH(rn,','),',') x
  159.   2               FROM (SELECT to_char(ROWNUM-1,'fmx') rn FROM DUAL CONNECT BY ROWNUM<=16)
  160.   3              WHERE LEVEL=4
  161.   4              CONNECT BY NOCYCLE rn<> PRIOR rn AND LEVEL<=4
  162.   5            );

  163. 已创建43680行。

  164. 已用时间:  00: 00: 00.56
  165. SQL> create unique index idxtnx on t(n,x);

  166. 索引已创建。

  167. 已用时间:  00: 00: 00.08
  168. SQL> exec DBMS_STATS.GATHER_TABLE_STATS('LT','T');

  169. PL/SQL 过程已成功完成。

  170. 已用时间:  00: 00: 00.17
  171. SQL> set autot on
  172. SQL> select a.x||'+'||b.x||'='||to_char(a.n+b.n,'fm0xxx')s
  173.   2  from t a,t b --,t c
  174.   3  where a.n<to_number('8000','fm0xxx')
  175.   4        and a.n<b.n
  176.   5        AND a.n+b.n <=to_number('fedc','fm0xxx')
  177.   6        and length(translate('0123456789abcdef','$'||a.x||b.x||to_char(a.n+b.n,'fm0xxx'),'$'))=4
  178.   7        and rownum<=10;

  179. S
  180. ---------------
  181. 0234+5f78=61ac
  182. 0234+5f79=61ad
  183. 0234+5f89=61bd
  184. 0234+5f8a=61be
  185. 0234+5f97=61cb
  186. 0234+5f9a=61ce
  187. 0234+5fa7=61db
  188. 0234+5fa8=61dc
  189. 0234+5fb8=61ec
  190. 0234+5fb9=61ed

  191. 已选择10行。

  192. 已用时间:  00: 00: 37.28

  193. 执行计划
  194. ----------------------------------------------------------
  195. Plan hash value: 2436370502

  196. ------------------------------------------------------------------------------
  197. | Id  | Operation           | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
  198. ------------------------------------------------------------------------------
  199. |   0 | SELECT STATEMENT    |        |    10 |   180 |    27   (0)| 00:00:01 |
  200. |*  1 |  COUNT STOPKEY      |        |       |       |            |          |
  201. |   2 |   NESTED LOOPS      |        |    10 |   180 |    27   (0)| 00:00:01 |
  202. |*  3 |    INDEX RANGE SCAN | IDXTNX |  2105 | 18945 |     2   (0)| 00:00:01 |
  203. |*  4 |    TABLE ACCESS FULL| T      |    10 |    90 |    25   (0)| 00:00:01 |
  204. ------------------------------------------------------------------------------

  205. Predicate Information (identified by operation id):
  206. ---------------------------------------------------

  207.    1 - filter(ROWNUM<=10)
  208.    3 - access("A"."N"<TO_NUMBER('8000','fm0xxx'))
  209.    4 - filter("A"."N"<"B"."N" AND "A"."N"+"B"."N"<=TO_NUMBER('fedc','fm0
  210.               xxx') AND LENGTH(TRANSLATE('0123456789abcdef','$'||"A"."X"||"B"."X"||TO_
  211.               CHAR("A"."N"+"B"."N",'fm0xxx'),'$'))=4)


  212. 统计信息
  213. ----------------------------------------------------------
  214.           1  recursive calls
  215.           0  db block gets
  216.       19443  consistent gets
  217.           0  physical reads
  218.           0  redo size
  219.         755  bytes sent via SQL*Net to client
  220.         520  bytes received via SQL*Net from client
  221.           2  SQL*Net roundtrips to/from client
  222.           0  sorts (memory)
  223.           0  sorts (disk)
  224.          10  rows processed

  225. SQL> select /*use_merge(a b)*/a.x||'+'||b.x||'='||to_char(a.n+b.n,'fm0xxx')s
  226.   2  from t a,t b --,t c
  227.   3  where a.n<to_number('8000','fm0xxx')
  228.   4        and a.n<b.n
  229.   5        AND a.n+b.n <=to_number('fedc','fm0xxx')
  230.   6        and length(translate('0123456789abcdef','$'||a.x||b.x||to_char(a.n+b.n,'fm0xxx'),'$'))=4
  231.   7        and rownum<=10;

  232. S
  233. ---------------
  234. 0234+5f78=61ac
  235. 0234+5f79=61ad
  236. 0234+5f89=61bd
  237. 0234+5f8a=61be
  238. 0234+5f97=61cb
  239. 0234+5f9a=61ce
  240. 0234+5fa7=61db
  241. 0234+5fa8=61dc
  242. 0234+5fb8=61ec
  243. 0234+5fb9=61ed

  244. 已选择10行。

  245. 已用时间:  00: 00: 37.35

  246. 执行计划
  247. ----------------------------------------------------------
  248. Plan hash value: 2436370502

  249. ------------------------------------------------------------------------------
  250. | Id  | Operation           | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
  251. ------------------------------------------------------------------------------
  252. |   0 | SELECT STATEMENT    |        |    10 |   180 |    27   (0)| 00:00:01 |
  253. |*  1 |  COUNT STOPKEY      |        |       |       |            |          |
  254. |   2 |   NESTED LOOPS      |        |    10 |   180 |    27   (0)| 00:00:01 |
  255. |*  3 |    INDEX RANGE SCAN | IDXTNX |  2105 | 18945 |     2   (0)| 00:00:01 |
  256. |*  4 |    TABLE ACCESS FULL| T      |    10 |    90 |    25   (0)| 00:00:01 |
  257. ------------------------------------------------------------------------------

  258. Predicate Information (identified by operation id):
  259. ---------------------------------------------------

  260.    1 - filter(ROWNUM<=10)
  261.    3 - access("A"."N"<TO_NUMBER('8000','fm0xxx'))
  262.    4 - filter("A"."N"<"B"."N" AND "A"."N"+"B"."N"<=TO_NUMBER('fedc','fm0
  263.               xxx') AND LENGTH(TRANSLATE('0123456789abcdef','$'||"A"."X"||"B"."X"||TO_
  264.               CHAR("A"."N"+"B"."N",'fm0xxx'),'$'))=4)


  265. 统计信息
  266. ----------------------------------------------------------
  267.           1  recursive calls
  268.           0  db block gets
  269.       19443  consistent gets
  270.           0  physical reads
  271.           0  redo size
  272.         755  bytes sent via SQL*Net to client
  273.         520  bytes received via SQL*Net from client
  274.           2  SQL*Net roundtrips to/from client
  275.           0  sorts (memory)
  276.           0  sorts (disk)
  277.          10  rows processed

  278. SQL>
复制代码

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
72#
 楼主| 发表于 2010-6-13 09:58 | 只看该作者
貌似iot对全表没有什么贡献

  1. SQL> set autot on
  2. SQL> select count(*) from(
  3.   2  select a.x||'+'||b.x||'='||to_char(a.n+b.n,'fm0xxx')s
  4.   3  from t a,t b --,t c
  5.   4  where a.n<to_number('8000','fm0xxx')
  6.   5        and a.n<b.n
  7.   6        AND a.n+b.n <=to_number('fedc','fm0xxx')
  8.   7        and length(translate('0123456789abcdef','$'||a.x||b.x||to_char(a.n+b.n,'fm0xxx'),'$'))=4
  9.   8        );

  10.   COUNT(*)
  11. ----------
  12.    3026800

  13. 已用时间:  00: 37: 54.65

  14. 执行计划
  15. ----------------------------------------------------------
  16. Plan hash value: 1585527285

  17. ----------------------------------------------------------------------------------------------
  18. | Id  | Operation                | Name              | Rows  | Bytes | Cost (%CPU)| Time     |
  19. ----------------------------------------------------------------------------------------------
  20. |   0 | SELECT STATEMENT         |                   |     1 |    18 |   177  (84)| 00:00:03 |
  21. |   1 |  SORT AGGREGATE          |                   |     1 |    18 |            |          |
  22. |   2 |   MERGE JOIN             |                   | 23849 |   419K|   177  (84)| 00:00:03 |
  23. |*  3 |    INDEX RANGE SCAN      | SYS_IOT_TOP_89136 |  2184 | 19656 |     2   (0)| 00:00:01 |
  24. |*  4 |    FILTER                |                   |       |       |            |          |
  25. |*  5 |     SORT JOIN            |                   | 43680 |   383K|    29   (7)| 00:00:01 |
  26. |   6 |      INDEX FAST FULL SCAN| SYS_IOT_TOP_89136 | 43680 |   383K|    27   (0)| 00:00:01 |
  27. ----------------------------------------------------------------------------------------------

  28. Predicate Information (identified by operation id):
  29. ---------------------------------------------------

  30.    3 - access("A"."N"<TO_NUMBER('8000','fm0xxx'))
  31.    4 - filter("A"."N"+"B"."N"<=TO_NUMBER('fedc','fm0xxx') AND
  32.               LENGTH(TRANSLATE('0123456789abcdef','$'||"A"."X"||"B"."X"||TO_CHAR("A"."N"+"B"."N",'fm
  33.               0xxx'),'$'))=4)
  34.    5 - access("A"."N"<"B"."N")
  35.        filter("A"."N"<"B"."N")


  36. 统计信息
  37. ----------------------------------------------------------
  38.           1  recursive calls
  39.           0  db block gets
  40.         148  consistent gets
  41.           0  physical reads
  42.           0  redo size
  43.         525  bytes sent via SQL*Net to client
  44.         520  bytes received via SQL*Net from client
  45.           2  SQL*Net roundtrips to/from client
  46.           1  sorts (memory)
  47.           0  sorts (disk)
  48.           1  rows processed
复制代码

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
73#
 楼主| 发表于 2010-6-13 12:29 | 只看该作者
把问题规模变成只包含1-9abc的16进制数,时间变得有意义了


  1. drop table t purge;
  2. create table t(x char(4),n number(5,0)PRIMARY KEY)organization index ;
  3. insert into t select x,to_number(x,'fm0xxx')n from(SELECT REPLACE(SYS_CONNECT_BY_PATH(rn,','),',') x
  4.              FROM (SELECT to_char(ROWNUM,'fmx') rn FROM DUAL CONNECT BY ROWNUM<=12)
  5.             WHERE LEVEL=4
  6.             CONNECT BY NOCYCLE rn<> PRIOR rn AND LEVEL<=4
  7.           );
  8. --create unique index idxtx on t(x);         
  9. --create unique index idxtn on t(n);
  10. --create unique index idxtnx on t(n,x);
  11. exec DBMS_STATS.GATHER_TABLE_STATS('LT','T');

  12. select count(*) from(
  13. select a.x||'+'||b.x||'='||to_char(a.n+b.n,'fm0xxx')s
  14. from t a,t b --,t c
  15. where a.n<to_number('6000','fm0xxx')
  16.       and a.n<b.n
  17.       AND a.n+b.n <=to_number('cba9','fm0xxx')
  18.       and translate('123456789abc','$'||a.x||b.x||to_char(a.n+b.n,'fm0xxx'),'$')is null
  19.       );   
  20. --2 rownum      
  21. select a.x||'+'||b.x||'='||to_char(a.n+b.n,'fm0xxx')s
  22. from t a,t b --,t c
  23. where a.n<to_number('6000','fm0xxx')
  24.       and a.n<b.n
  25.       AND a.n+b.n <=to_number('cba9','fm0xxx')
  26.       and translate('123456789abc','$'||a.x||b.x||to_char(a.n+b.n,'fm0xxx'),'$')is null
  27.       and rownum<=10;

  28. SQL> set autot on
  29. SQL> select count(*) from(
  30.   2  select a.x||'+'||b.x||'='||to_char(a.n+b.n,'fm0xxx')s
  31.   3  from t a,t b --,t c
  32.   4  where a.n<to_number('6000','fm0xxx')
  33.   5        and a.n<b.n
  34.   6        AND a.n+b.n <=to_number('cba9','fm0xxx')
  35.   7        and translate('123456789abc','$'||a.x||b.x||to_char(a.n+b.n,'fm0xxx'),'$')is null
  36.   8        );

  37.   COUNT(*)
  38. ----------
  39.       3408

  40. 已用时间:  00: 01: 45.01

  41. 执行计划
  42. ----------------------------------------------------------
  43. Plan hash value: 3235280849

  44. ----------------------------------------------------------------------------------------------
  45. | Id  | Operation                | Name              | Rows  | Bytes | Cost (%CPU)| Time     |
  46. ----------------------------------------------------------------------------------------------
  47. |   0 | SELECT STATEMENT         |                   |     1 |    18 |    23  (53)| 00:00:01 |
  48. |   1 |  SORT AGGREGATE          |                   |     1 |    18 |            |          |
  49. |   2 |   MERGE JOIN             |                   |  8820 |   155K|    23  (53)| 00:00:01 |
  50. |*  3 |    INDEX RANGE SCAN      | SYS_IOT_TOP_89142 |   594 |  5346 |     2   (0)| 00:00:01 |
  51. |*  4 |    FILTER                |                   |       |       |            |          |
  52. |*  5 |     SORT JOIN            |                   | 11880 |   104K|    10  (10)| 00:00:01 |
  53. |   6 |      INDEX FAST FULL SCAN| SYS_IOT_TOP_89142 | 11880 |   104K|     9   (0)| 00:00:01 |
  54. ----------------------------------------------------------------------------------------------

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

  57.    3 - access("A"."N"<TO_NUMBER('6000','fm0xxx'))
  58.    4 - filter("A"."N"+"B"."N"<=TO_NUMBER('cba9','fm0xxx') AND
  59.               TRANSLATE('123456789abc','$'||"A"."X"||"B"."X"||TO_CHAR("A"."N"+"B"."N",'fm0xxx'),'$')
  60.                IS NULL)
  61.    5 - access("A"."N"<"B"."N")
  62.        filter("A"."N"<"B"."N")


  63. 统计信息
  64. ----------------------------------------------------------
  65.           1  recursive calls
  66.           0  db block gets
  67.          44  consistent gets
  68.           0  physical reads
  69.           0  redo size
  70.         524  bytes sent via SQL*Net to client
  71.         520  bytes received via SQL*Net from client
  72.           2  SQL*Net roundtrips to/from client
  73.           1  sorts (memory)
  74.           0  sorts (disk)
  75.           1  rows processed

  76. SQL> select a.x||'+'||b.x||'='||to_char(a.n+b.n,'fm0xxx')s
  77.   2  from t a,t b --,t c
  78.   3  where a.n<to_number('6000','fm0xxx')
  79.   4        and a.n<b.n
  80.   5        AND a.n+b.n <=to_number('cba9','fm0xxx')
  81.   6        and translate('123456789abc','$'||a.x||b.x||to_char(a.n+b.n,'fm0xxx'),'$')is null
  82.   7        and rownum<=10;

  83. S
  84. ---------------
  85. 1234+5897=6acb
  86. 1234+5978=6bac
  87. 1234+6a85=7cb9
  88. 1234+a568=b79c
  89. 1234+b675=c8a9
  90. 1234+b756=c98a
  91. 1235+8a46=9c7b
  92. 1235+9487=a6bc
  93. 1235+6a84=7cb9
  94. 1235+b674=c8a9

  95. 已选择10行。

  96. 已用时间:  00: 00: 00.10

  97. 执行计划
  98. ----------------------------------------------------------
  99. Plan hash value: 1988574745

  100. --------------------------------------------------------------------------------------------
  101. | Id  | Operation              | Name              | Rows  | Bytes | Cost (%CPU)| Time     |
  102. --------------------------------------------------------------------------------------------
  103. |   0 | SELECT STATEMENT       |                   |    10 |   180 |     9   (0)| 00:00:01 |
  104. |*  1 |  COUNT STOPKEY         |                   |       |       |            |          |
  105. |   2 |   NESTED LOOPS         |                   |    11 |   198 |     9   (0)| 00:00:01 |
  106. |*  3 |    INDEX RANGE SCAN    | SYS_IOT_TOP_89142 |   587 |  5283 |     2   (0)| 00:00:01 |
  107. |*  4 |    INDEX FAST FULL SCAN| SYS_IOT_TOP_89142 |    11 |    99 |     7   (0)| 00:00:01 |
  108. --------------------------------------------------------------------------------------------

  109. Predicate Information (identified by operation id):
  110. ---------------------------------------------------

  111.    1 - filter(ROWNUM<=10)
  112.    3 - access("A"."N"<TO_NUMBER('6000','fm0xxx'))
  113.    4 - filter("A"."N"<"B"."N" AND "A"."N"+"B"."N"<=TO_NUMBER('cba9','fm0xxx') AND
  114.               TRANSLATE('123456789abc','$'||"A"."X"||"B"."X"||TO_CHAR("A"."N"+"B"."N",'fm0xxx'),'$
  115.               ') IS NULL)


  116. 统计信息
  117. ----------------------------------------------------------
  118.           1  recursive calls
  119.           0  db block gets
  120.          67  consistent gets
  121.           0  physical reads
  122.           0  redo size
  123.         755  bytes sent via SQL*Net to client
  124.         520  bytes received via SQL*Net from client
  125.           2  SQL*Net roundtrips to/from client
  126.           0  sorts (memory)
  127.           0  sorts (disk)
  128.          10  rows processed

  129. SQL>

  130.    
复制代码

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
74#
 楼主| 发表于 2010-6-13 13:07 | 只看该作者
with 居然快一些。

  1. SQL> with t as
  2.   2  (
  3.   3  select x,to_number(x,'fm0xxx')n from(SELECT REPLACE(SYS_CONNECT_BY_PATH(rn,','),',') x
  4.   4               FROM (SELECT to_char(ROWNUM,'fmx') rn FROM DUAL CONNECT BY ROWNUM<=12)
  5.   5              WHERE LEVEL=4
  6.   6              CONNECT BY NOCYCLE rn<> PRIOR rn AND LEVEL<=4
  7.   7            )
  8.   8  )
  9.   9  select count(*) from(
  10. 10  select a.x||'+'||b.x||'='||to_char(a.n+b.n,'fm0xxx')s
  11. 11  from t a,t b --,t c
  12. 12  where a.n<to_number('6000','fm0xxx')
  13. 13        and a.n<b.n
  14. 14        AND a.n+b.n <=to_number('cba9','fm0xxx')
  15. 15        and translate('123456789abc','$'||a.x||b.x||to_char(a.n+b.n,'fm0xxx'),'$')is null
  16. 16        );

  17.   COUNT(*)
  18. ----------
  19.       3408

  20. 已用时间:  00: 01: 39.47

  21. 执行计划
  22. ----------------------------------------------------------
  23. Plan hash value: 2529199631

  24. ------------------------------------------------------------------------------------------------------------------
  25. | Id  | Operation                           | Name                       | Rows  | Bytes | Cost (%CPU)| Time     |
  26. ------------------------------------------------------------------------------------------------------------------
  27. |   0 | SELECT STATEMENT                    |                            |     1 |  4030 |     6   (0)| 00:00:01 |
  28. |   1 |  TEMP TABLE TRANSFORMATION          |                            |       |       |            |          |
  29. |   2 |   LOAD AS SELECT                    |                            |       |       |            |          |
  30. |   3 |    VIEW                             |                            |     1 |  2002 |     2   (0)| 00:00:01 |
  31. |*  4 |     FILTER                          |                            |       |       |            |          |
  32. |*  5 |      CONNECT BY WITHOUT FILTERING   |                            |       |       |            |          |
  33. |   6 |       VIEW                          |                            |     1 |     3 |     2   (0)| 00:00:01 |
  34. |   7 |        COUNT                        |                            |       |       |            |          |
  35. |*  8 |         CONNECT BY WITHOUT FILTERING|                            |       |       |            |          |
  36. |   9 |          FAST DUAL                  |                            |     1 |       |     2   (0)| 00:00:01 |
  37. |  10 |   SORT AGGREGATE                    |                            |     1 |  4030 |            |          |
  38. |  11 |    NESTED LOOPS                     |                            |     1 |  4030 |     4   (0)| 00:00:01 |
  39. |* 12 |     VIEW                            |                            |     1 |  2015 |     2   (0)| 00:00:01 |
  40. |  13 |      TABLE ACCESS FULL              | SYS_TEMP_0FD9D6652_16B6486 |     1 |  2002 |     2   (0)| 00:00:01 |
  41. |* 14 |     VIEW                            |                            |     1 |  2015 |     2   (0)| 00:00:01 |
  42. |  15 |      TABLE ACCESS FULL              | SYS_TEMP_0FD9D6652_16B6486 |     1 |  2002 |     2   (0)| 00:00:01 |
  43. ------------------------------------------------------------------------------------------------------------------

  44. Predicate Information (identified by operation id):
  45. ---------------------------------------------------

  46.    4 - filter(LEVEL=4)
  47.    5 - filter("RN"<>PRIOR "RN" AND LEVEL<=4)
  48.    8 - filter(ROWNUM<=12)
  49.   12 - filter("A"."N"<TO_NUMBER('6000','fm0xxx'))
  50.   14 - filter("A"."N"<"B"."N" AND "A"."N"+"B"."N"<=TO_NUMBER('cba9','fm0xxx') AND
  51.               TRANSLATE('123456789abc','$'||"A"."X"||"B"."X"||TO_CHAR("A"."N"+"B"."N",'fm0xxx'),'$') IS NULL)


  52. 统计信息
  53. ----------------------------------------------------------
  54.         136  recursive calls
  55.          34  db block gets
  56.      133698  consistent gets
  57.          25  physical reads
  58.        1456  redo size
  59.         524  bytes sent via SQL*Net to client
  60.         520  bytes received via SQL*Net from client
  61.           2  SQL*Net roundtrips to/from client
  62.           2  sorts (memory)
  63.           0  sorts (disk)
  64.           1  rows processed

复制代码

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
75#
 楼主| 发表于 2010-6-13 15:40 | 只看该作者
把问题缩小以后,sql vs plsql
plsql完败


  1. SQL> with t as
  2.   2  (
  3.   3  select x,to_number(x,'fm0xxx')n from(SELECT REPLACE(SYS_CONNECT_BY_PATH(rn,','),',') x
  4.   4               FROM (SELECT to_char(ROWNUM,'fmx') rn FROM DUAL CONNECT BY ROWNUM<=12)
  5.   5              WHERE LEVEL=4
  6.   6              CONNECT BY NOCYCLE rn<> PRIOR rn AND LEVEL<=4
  7.   7            )
  8.   8  )
  9.   9  select count(*) from(
  10. 10  select a.x||'+'||b.x||'='||to_char(a.n+b.n,'fm0xxx')s
  11. 11  from t a,t b --,t c
  12. 12  where a.n<to_number('cba9','fm0xxx')/2
  13. 13        and a.n<b.n
  14. 14        AND a.n+b.n <=to_number('cba9','fm0xxx')
  15. 15        and translate('123456789abc','$'||a.x||b.x||to_char(a.n+b.n,'fm0xxx'),'$')is null
  16. 16        );

  17.   COUNT(*)
  18. ----------
  19.       3408

  20. 已用时间:  00: 01: 41.53

复制代码


  1. SQL> create or replace procedure pc3
  2.   2  as
  3.   3     time_before BINARY_INTEGER;
  4.   4     time_after BINARY_INTEGER;
  5.   5     TYPE t_num IS TABLE OF VARCHAR(5) INDEX BY  PLS_INTEGER ;
  6.   6     x t_num;
  7.   7     a t_num;
  8.   8     b t_num;
  9.   9     c PLS_INTEGER;
  10. 10     c1 PLS_INTEGER;
  11. 11     r PLS_INTEGER;
  12. 12     l varchar(4);
  13. 13  begin
  14. 14  c:=0;
  15. 15  time_before := DBMS_UTILITY.GET_TIME;
  16. 16  for i in to_number('1234','fm0xxx')..to_number('cba9','fm0xxx') loop
  17. 17  l:=to_char(i,'fm0xxx');
  18. 18  if substr(l,1,1)<>substr(l,2,1)and
  19. 19  substr(l,2,1)<>substr(l,3,1)and
  20. 20  substr(l,3,1)<>substr(l,4,1)and
  21. 21  substr(l,1,1)<>substr(l,3,1)and
  22. 22  substr(l,2,1)<>substr(l,4,1)and
  23. 23  substr(l,1,1)<>substr(l,4,1)and
  24. 24  instr(l,0)=0 then
  25. 25  c:=c+1;
  26. 26  if i<to_number('cba9','fm0xxx')/2 then
  27. 27  a(c):=l;--to_char(i,'fm0xxx');
  28. 28  c1:=c;
  29. 29  end if;
  30. 30  b(c):=l;--to_char(i,'fm0xxx');
  31. 31  x(i):=c;
  32. 32  else
  33. 33  x(i):=c;
  34. 34  end if;
  35. 35  end loop;
  36. 36  r:=0;
  37. 37  dbms_output.put_line('c='||c||'c1='||c1||a(1)||b(1));
  38. 38  FOR I IN 1 .. c1 LOOP
  39. 39  FOR J IN x( to_number(a(i),'fm0xxx'))+1 .. x(to_number('cba9','fm0xxx')-to_number(a(i),'fm0xxx')) LOOP
  40. 40  if translate('123456789abc','$'||a(i)||b(j)||
  41. 41  to_char(to_number(a(i),'fm0xxx')+to_number(b(j),'fm0xxx'),'fm0xxx'),'$')is null then
  42. 42  --dbms_output.put_line(a(i)||b(j)||to_char(to_number(a(i),'fm0xxx')+to_number(b(j),'fm0xxx'),'fm0xxx'));
  43. 43  --NULL;
  44. 44  r:=r+1;
  45. 45  end if;
  46. 46  end loop;
  47. 47  end loop;
  48. 48
  49. 49  time_after := DBMS_UTILITY.GET_TIME;
  50. 50  DBMS_OUTPUT.PUT_LINE ('output:'||(time_after - time_before)||'rows:'||r);
  51. 51  end;
  52. 52  /

  53. 过程已创建。

  54. 已用时间:  00: 00: 00.04
  55. SQL> exec pc3;
  56. c=25701c1=1166812341234
  57. output:137213rows:3408

  58. PL/SQL 过程已成功完成。

  59. 已用时间:  00: 22: 52.07
  60. SQL>

复制代码

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
76#
发表于 2010-6-13 15:43 | 只看该作者
很深奥,赞!

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
77#
 楼主| 发表于 2010-6-13 16:27 | 只看该作者
深奥的是sql的内部算法,如何实现的,75#同样是2个全表扫描和nest loop,算法和我的plsql一样

plsql用整数代替varchar,省了2分钟

  1. SQL> create or replace procedure pc4
  2.   2  as
  3.   3     time_before BINARY_INTEGER;
  4.   4     time_after BINARY_INTEGER;
  5.   5     TYPE t_num IS TABLE OF PLS_INTEGER INDEX BY  PLS_INTEGER ;
  6.   6     x t_num;
  7.   7     a t_num;
  8.   8     b t_num;
  9.   9     c PLS_INTEGER;
  10. 10     c1 PLS_INTEGER;
  11. 11     r PLS_INTEGER;
  12. 12     l varchar(4);
  13. 13  begin
  14. 14  c:=0;
  15. 15  time_before := DBMS_UTILITY.GET_TIME;
  16. 16  for i in to_number('1234','fm0xxx')..to_number('cba9','fm0xxx') loop
  17. 17  l:=to_char(i,'fm0xxx');
  18. 18  if substr(l,1,1)<>substr(l,2,1)and
  19. 19  substr(l,2,1)<>substr(l,3,1)and
  20. 20  substr(l,3,1)<>substr(l,4,1)and
  21. 21  substr(l,1,1)<>substr(l,3,1)and
  22. 22  substr(l,2,1)<>substr(l,4,1)and
  23. 23  substr(l,1,1)<>substr(l,4,1)and
  24. 24  instr(l,0)=0 then
  25. 25  c:=c+1;
  26. 26  if i<to_number('cba9','fm0xxx')/2 then
  27. 27  a(c):=i;
  28. 28  c1:=c;
  29. 29  end if;
  30. 30  b(c):=i;
  31. 31  x(i):=c;
  32. 32  else
  33. 33  x(i):=c;
  34. 34  end if;
  35. 35  end loop;
  36. 36  r:=0;
  37. 37  dbms_output.put_line('c='||c||'c1='||c1||a(1)||b(1));
  38. 38  FOR I IN 1 .. c1 LOOP
  39. 39  FOR J IN x(a(i))+1 .. x(to_number('cba9','fm0xxx')-a(i)) LOOP
  40. 40  if translate('123456789abc','$'||to_char(a(i),'fm0xxx')||to_char(b(j),'fm0xxx')||
  41. 41  to_char(a(i)+b(j),'fm0xxx'),'$')is null then
  42. 42  --dbms_output.put_line(to_char(a(i),'fm0xxx')||to_char(b(j),'fm0xxx')||to_char(a(i)+b(j),'fm0xxx'));
  43. 43  --NULL;
  44. 44  r:=r+1;
  45. 45  end if;
  46. 46  end loop;
  47. 47  --if r>=2 then
  48. 48    --  exit;
  49. 49  --end if;
  50. 50  end loop;
  51. 51
  52. 52  time_after := DBMS_UTILITY.GET_TIME;
  53. 53  DBMS_OUTPUT.PUT_LINE ('output:'||(time_after - time_before)||'rows:'||r);
  54. 54  end;
  55. 55  /

  56. 过程已创建。

  57. 已用时间:  00: 00: 00.06
  58. SQL> exec pc4;
  59. c=25701c1=1166846604660
  60. output:126172rows:3408

  61. PL/SQL 过程已成功完成。

  62. 已用时间:  00: 21: 01.65
  63. SQL>
复制代码

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
78#
 楼主| 发表于 2010-6-13 16:34 | 只看该作者
不算count(*),求实际记录也是一样的时间

  1. SQL> create table re as
  2.   2  with t as
  3.   3  (
  4.   4  select x,to_number(x,'fm0xxx')n from(SELECT REPLACE(SYS_CONNECT_BY_PATH(rn,','),',') x
  5.   5               FROM (SELECT to_char(ROWNUM,'fmx') rn FROM DUAL CONNECT BY ROWNUM<=12)
  6.   6              WHERE LEVEL=4
  7.   7              CONNECT BY NOCYCLE rn<> PRIOR rn AND LEVEL<=4
  8.   8            )
  9.   9  )
  10. 10  select cast(a.x||'+'||b.x||'='||to_char(a.n+b.n,'fm0xxx') as varchar(14))s
  11. 11  from t a,t b --,t c
  12. 12  where a.n<to_number('cba9','fm0xxx')/2
  13. 13        and a.n<b.n
  14. 14        AND a.n+b.n <=to_number('cba9','fm0xxx')
  15. 15        and translate('123456789abc','$'||a.x||b.x||to_char(a.n+b.n,'fm0xxx'),'$')is null
  16. 16  ;

  17. 表已创建。

  18. 已用时间:  00: 01: 41.22
复制代码

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
79#
 楼主| 发表于 2010-6-13 19:39 | 只看该作者
自己写错了,导致没用的def也混进了穷举范围,本来b:11800 结果 25701,时间翻了6倍
现在和SQL持平

  1. SQL> create or replace procedure pc5
  2.   2  as
  3.   3     time_before BINARY_INTEGER;
  4.   4     time_after BINARY_INTEGER;
  5.   5     TYPE t_num IS TABLE OF PLS_INTEGER INDEX BY  PLS_INTEGER ;
  6.   6     x t_num;
  7.   7     a t_num;
  8.   8     b t_num;
  9.   9     c PLS_INTEGER;
  10. 10     c1 PLS_INTEGER;
  11. 11     r PLS_INTEGER;
  12. 12     l varchar(4);
  13. 13  begin
  14. 14  c:=0;
  15. 15  time_before := DBMS_UTILITY.GET_TIME;
  16. 16  for i in to_number('1234','fm0xxx')..to_number('cba9','fm0xxx') loop
  17. 17  l:=to_char(i,'fm0xxx');
  18. 18  if substr(l,1,1)<>substr(l,2,1)and
  19. 19  substr(l,2,1)<>substr(l,3,1)and
  20. 20  substr(l,3,1)<>substr(l,4,1)and
  21. 21  substr(l,1,1)<>substr(l,3,1)and
  22. 22  substr(l,2,1)<>substr(l,4,1)and
  23. 23  substr(l,1,1)<>substr(l,4,1)and
  24. 24  instr(l,0)=0 and instr(l,'d')=0 and instr(l,'e')=0 and instr(l,'f')=0 then
  25. 25  c:=c+1;
  26. 26  if i<to_number('cba9','fm0xxx')/2 then
  27. 27  a(c):=i;
  28. 28  c1:=c;
  29. 29  end if;
  30. 30  b(c):=i;
  31. 31  x(i):=c;
  32. 32  else
  33. 33  x(i):=c;
  34. 34  end if;
  35. 35  end loop;
  36. 36  r:=0;
  37. 37  --dbms_output.put_line('c='||c||'c1='||c1||a(1)||b(1));
  38. 38  FOR I IN 1 .. c1 LOOP
  39. 39  FOR J IN x(a(i))+1 .. x(to_number('cba9','fm0xxx')-a(i)) LOOP
  40. 40  --if translate('123456789abc','$'||to_char(a(i),'fm0xxx')||to_char(b(j),'fm0xxx')||to_char(a(i)+b(j),'fm0xxx'),'$')is null then
  41. 41  --dbms_output.put_line(to_char(a(i),'fm0xxx')||to_char(b(j),'fm0xxx')||to_char(a(i)+b(j),'fm0xxx'));
  42. 42  --NULL;
  43. 43  l:=to_char(a(i)+b(j),'fm0xxx');
  44. 44  if substr(l,1,1)<>substr(l,2,1)and
  45. 45  substr(l,2,1)<>substr(l,3,1)and
  46. 46  substr(l,3,1)<>substr(l,4,1)and
  47. 47  substr(l,1,1)<>substr(l,3,1)and
  48. 48  substr(l,2,1)<>substr(l,4,1)and
  49. 49  substr(l,1,1)<>substr(l,4,1)and
  50. 50  instr(l,0)=0 and instr(l,'d')=0 and instr(l,'e')=0 and instr(l,'f')=0
  51. 51  and length(translate(to_char(a(i),'fm0xxx'),'$'||l,'$'))=4
  52. 52  and length(translate(to_char(b(j),'fm0xxx'),'$'||l,'$'))=4
  53. 53  and length(translate(to_char(a(i),'fm0xxx'),'$'||to_char(b(j),'fm0xxx'),'$'))=4 then
  54. 54  r:=r+1;
  55. 55  --dbms_output.put_line(r||':'||to_char(a(i),'fm0xxx')||to_char(b(j),'fm0xxx')||to_char(a(i)+b(j),'fm0xxx'));
  56. 56  end if;
  57. 57  end loop;
  58. 58  --if r>=1000 then
  59. 59  --  exit;
  60. 60  --end if;
  61. 61  end loop;
  62. 62
  63. 63  time_after := DBMS_UTILITY.GET_TIME;
  64. 64  DBMS_OUTPUT.PUT_LINE ('output:'||(time_after - time_before)||'rows:'||r);
  65. 65  end;
  66. 66  /

  67. 过程已创建。

  68. 已用时间:  00: 00: 00.05
  69. SQL> exec pc5;
  70. output:10228rows:3408

  71. PL/SQL 过程已成功完成。

  72. 已用时间:  00: 01: 42.27
  73. SQL>
复制代码

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
80#
 楼主| 发表于 2010-6-14 14:04 | 只看该作者
怎么才能利用加数交换个十百位减少穷举次数呢

使用道具 举报

回复

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

本版积分规则 发表回复

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