大小写,空格,注释会导致不同的SQL ID吗?答案是会。
参考了Ask Tom中的2篇文章中的实验:
- Getting SQL ids for a a sqltext
- Two identical queries with same parameter values have different execution plans …
以下6个SQL语句:
select /* this */* from dual;
-- 注释不同
select /* that */* from dual;
-- 大写的FROM
select /* this */* FROM dual;
-- 大写首字母From
select /* that */* From dual;
-- from之前加了多个空格
select /* this */* from dual;
-- from之前加了多一个Tab
select /* that */* from dual;
查询SQL ID,其结果是6个不同的ID:
select sql_id, sql_text from v$sql
where ( sql_text like '%this%' or sql_text like '%that%' );
SQL_ID SQL_TEXT
3n5uv2khs5hrz select /* this */* from dual
gqrwquv0utrb7 select /* this */* from dual
cd8h6juhw5wkk select /* that */* from dual
dp4qdmznukfmx select /* this */* FROM dual
3q6usz444fzcx select /* that */* From dual
764k7wbm77d1c select /* that */* from dual