zoukankan      html  css  js  c++  java
  • Oracle SQL硬解析和软解析示例

    Oracle的软解析会把预处理的sql放到SGA(共享池)中,避免每次都让oracle做优化和生成查询计划;在Java程序中通常使用预处理语句,不让数据库走硬解析;
     
    下面是使用绑定变量的软解析和硬解析示例:
    CREATE OR REPLACE PROCEDURE proc1
    AS
    BEGIN
      FOR i IN 1..10000
      LOOP
       -- 绑定变量,软解析
        EXECUTE IMMEDIATE 'insert into t values(:x)' USING i;
      END LOOP;
    END;
    /
    
    
    -- 硬解析
    EXECUTE IMMEDIATE 'insert into t values('||i||')';
    

     

    在Oracle中可以通过下面的SQL检查哪些业务SQL没有绑定变量,导致走了硬解析耳没有发挥SQL的最佳性能:

    SELECT distinct to_char(FORCE_MATCHING_SIGNATURE) FORCE_MATCHING_SIGNATURE, SQL_TEXT
    FROM (select SQL_ID,
    SQL_TEXT,
    Q.FORCE_MATCHING_SIGNATURE FORCE_MATCHING_SIGNATURE,
    row_number() over(partition by Q.FORCE_MATCHING_SIGNATURE order by Q.FORCE_MATCHING_SIGNATURE) S_ROW_NUM
    FROM V$SQL Q
    WHERE FORCE_MATCHING_SIGNATURE > 100
    and parsing_schema_name not in
    ('MGMT_VIEW',
    'SYSMAN',
    'MDDATA',
    'OLAPSYS',
    'ORDSYS',
    'ORDPLUGINS',
    'SI_INFORMTN_SCHEMA',
    'MDSYS',
    'ANONYMOUS',
    'XDB',
    'CTXSYS',
    'DMSYS',
    'EXFSYS',
    'WMSYS',
    'ORACLE_OCM',
    'DBSNMP',
    'TSMSYS',
    'DIP',
    'OUTLN',
    'SYS',
    'SYSTEM'))
    WHERE S_ROW_NUM BETWEEN 105 AND 107
    ORDER BY FORCE_MATCHING_SIGNATURE;
    ★★★★★★好记性不如烂笔头★★★★★★
  • 相关阅读:
    119. Pascal's Triangle II
    118. Pascal's Triangle
    112. Path Sum
    111. Minimum Depth of Binary Tree
    110. Balanced Binary Tree
    108. Convert Sorted Array to Binary Search Tree
    88. Merge Sorted Array
    83. Remove Duplicates from Sorted List
    70. Climbing Stairs
    陌陌面试经历
  • 原文地址:https://www.cnblogs.com/fubinhnust/p/9925884.html
Copyright © 2011-2022 走看看