一条SQL语句如何被解析

来源:互联网 发布:mac ai如何剪切图片 编辑:程序博客网 时间:2024/04/30 03:10

Oracle automatically determines whether a SQL statement or PL/SQL block being issued is identical to another statement currently in the shared pool.

Oracle performs the following steps for the comparison:

  1. The text of the statement issued is compared to existing statements in the shared pool.
  2. The text of the statement is hashed. If there is no matching hash value, then the SQL statement does not currently exist in the shared pool, and a hard parse is performed.
  3. If there is a matching hash value for an existing SQL statement in the shared pool, then Oracle compares the text of the matched statement to the text of the statement hashed to see if they are identical. The text of the SQL statements or PL/SQL blocks must be identical, character for character, including spaces, case, and comments.
  4. The objects referenced in the issued statement are compared to the referenced objects of all existing statements in the shared pool to ensure that they are identical.
  5. Bind variables in the SQL statements must match in name, datatype, and length.
  6. The session's environment must be identical. Items compared include the following:
    • Optimization approach and goal. SQL statements must be optimized using the same optimization approach and, in the case of the cost-based approach, the same optimization goal.
    • Session-configurable parameters such as SORT_AREA_SIZE
原创粉丝点击