AnySQL中的特色功能介绍(四)

    在Oracle的调优中, 查看SQL的执行计划是非常重要和常用的方法, 在AnySQL中提供了几个方便地查看SQL执行计划的方法, 让我们来体验一下.

    第一种情况是获得一个SQL语句的执行计划, 可以用EXPLAIN PLAN命令, 这里的命令稍不同于SQL*Plus中的, 没有"FOR"关键字.

ASQL> EXPLAIN PLAN SELECT * FROM T_HASH;

SQLPLAN                                    COST  CARD KBYTE PS PE
------------------------------------------ ---- ----- ----- -- --
  0     SELECT STATEMENT Optimizer=RULE      20 10000    59      
  1   0   PARTITION HASH (ALL)                              1  8
  2   1     TABLE ACCESS (FULL) OF T_HASH    20 10000    59 1  8

    第二种情况是知道一个SQL的哈希值(Hash Value), 然后从V$SQL_PLAN中的执行计划(正在使用的), 可以使用定制命令"ORA PLAN 哈希值"来完成.

ASQL> ORA PLAN 821132411

SQLPLAN                                   COST  CARD KBYTE PS PE
----------------------------------------- ---- ----- ----- -- --
  0     SELECT STATEMENT Optimizer=RULE     20                  
  1   0   PARTITION HASH (ALL)                             1  8
  2   1     TABLE ACCESS (FULL) OF T_HASH   20 10000    59 1  8

3 rows returned.

    第二种情况是知道一个SQL的哈希值(Hash Value), 然后希望运行EXPLAIN PLAN命令来在当前环境下重新生成执行计划, 可以使用定制命令"ORA XPLAN 哈希值"来完成, 这个命令会首先打印现SQL语句, 然后显示它的执行计划.

ASQL> ORA XPLAN 821132411

SELECT * FROM T_HASH

SQLPLAN                                    COST  CARD KBYTE PS PE
------------------------------------------ ---- ----- ----- -- --
  0     SELECT STATEMENT Optimizer=RULE      20 10000    59      
  1   0   PARTITION HASH (ALL)                              1  8
  2   1     TABLE ACCESS (FULL) OF T_HASH    20 10000    59 1  8

    在STATSPACK或AWR中一般不会显示完整的SQL语句, 但肯定会告诉你一个哈希值, 这时你就可以方便地使用这些命令来进行调优了, 当然这些命令只是提供一些方便而已.

发表留言:

« Previous | Main | Next »

英语900句 | English 900

  • No, I only wrote her one letter this year.
  • 是的, 今年我才给她写过一封信.
  • And she?
  • 她呢?
  • She sent me a Christmas card last year.
  • 去年寄过一张圣诞卡.
  • Oh, that's not good.
  • 哦, 那可不好.
  • Yes, we should try to contact more.
  • 是的, 我们应该联系多点.