大小写、空格、注释会导致不同SQL ID是吗?答案是肯定的。
参考了Ask Tom两篇文章中的实验:
- 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,结果是六个不同的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