Oracle

對不同的語句進行硬解析?

  • March 2, 2013

假設我有這個查詢:

SELECT X FROM Y

如果我第一次執行它,那麼它會進行硬解析。

之後,我執行這個查詢:

select x from y

只是字母大小寫不同,是否意味著他們必須再次進行硬解析?

謝謝。

是的,這是兩個不同的查詢。它們都將被獨立解析並保存在 SQL 區域中。

SQL> create table share_test (foobar number);
Table created.

SQL> select foobar from share_test;
no rows selected

SQL> SELECT foobar FROM SHARE_TEST;
no rows selected

SQL> select sql_id, sql_text from v$sqlarea where sql_text like '%foobar%';
SQL_ID
-------------
SQL_TEXT
--------------------------------------------------------------------------------
g9cdv3mpuhd8d
select sql_id, sql_text from v$sqlarea where sql_text like '%foobar%'

d2v4u39j41y6k
select foobar from share_test

fdsqytc1y3f4u
SELECT foobar FROM SHARE_TEST

SQL 共享的標准在配置和使用記憶體- SQL 共享標准文件中。其中:

SQL 語句或 PL/SQL 塊的文本必須是相同的,一個字元一個字元,包括空格、大小寫和註釋。

引用自:https://dba.stackexchange.com/questions/35773