创建outline如下:
CREATE OUTLINE otl2 ON select/+ FULL(man1)/ id+1,name from man where id = 2;
查看 dba_ob_outlines

可以看到,前面常量被参数化了。
请问,这个outline 可以匹配
select id+9,name from man where id = 2
这条语句吗
创建outline如下:
CREATE OUTLINE otl2 ON select/+ FULL(man1)/ id+1,name from man where id = 2;
查看 dba_ob_outlines

可以看到,前面常量被参数化了。
请问,这个outline 可以匹配
select id+9,name from man where id = 2
这条语句吗
我的理解是可以的
参数化了,应该是一样的吧
可以自行验证下,创建好OUTLINE后执行SQL,查看GV$OB_PLAN_CACHE_PLAN_STAT表看有没有命中
SELECT TENANT_ID,
SVR_IP,
PLAN_ID,
SQL_ID,
TYPE,
DB_ID,
FIRST_LOAD_TIME,
LAST_ACTIVE_TIME,
AVG_EXE_USEC,
SLOWEST_EXE_TIME,
SLOWEST_EXE_USEC,
HIT_COUNT,
EXECUTIONS,
outline_data,
IS_BATCHED_MULTI_STMT,
LEFT(QUERY_SQL, 50) QUERY_SQL
FROM OCEANBASE.GV$OB_PLAN_CACHE_PLAN_STAT
以下位置的常量不会被参数化,会保留原值:
GROUP BY 子句中的常量
ORDER BY 子句中的常量
CAST 函数的类型参数
日期/时间函数的格式字符串
COLLATION 子句
Outline可以成功匹配
好像是匹配不了啊
使用视图DBA_OB_OUTLINES 与视图OCEANBASE.GV$OB_PLAN_CACHE_PLAN_STAT 进行查看验证!
outline_id 是否相同!