2026-03-12 20:23:15
This commit is contained in:
52
tpt/demos/spm_synonym.sql
Normal file
52
tpt/demos/spm_synonym.sql
Normal file
@@ -0,0 +1,52 @@
|
||||
-- Copyright 2019 Tanel Poder. All rights reserved. More info at https://blog.tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
-- this demos that a SQL Plan Baseline will still apply, even a synonym repoints to a different table.
|
||||
-- the table has to have the same name (as otherwise the plan hash value changes), but the schema
|
||||
-- is not part of plan hash value.
|
||||
|
||||
PROMPT This script will drop some tables called "T".
|
||||
PROMPT Hit enter to continue, CTRL+C to cancel...
|
||||
PAUSE
|
||||
|
||||
ALTER SESSION SET optimizer_use_sql_plan_baselines=TRUE;
|
||||
|
||||
DROP TABLE system.t;
|
||||
DROP TABLE scott.t;
|
||||
DROP SYNONYM syn;
|
||||
|
||||
CREATE TABLE system.t AS SELECT * FROM dba_objects;
|
||||
CREATE TABLE scott.t AS SELECT * FROM system.t;
|
||||
|
||||
CREATE INDEX system.i ON system.t (object_id);
|
||||
CREATE INDEX scott.i ON scott.t (object_id);
|
||||
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS('SYSTEM','T', cascade=>TRUE);
|
||||
EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT' ,'T', cascade=>TRUE);
|
||||
|
||||
-- First point SYN to system schema
|
||||
CREATE SYNONYM syn FOR system.t;
|
||||
|
||||
SELECT COUNT(owner) FROM syn t WHERE object_id = 12345;
|
||||
|
||||
@x
|
||||
|
||||
SELECT /*+ FULL(t) */ COUNT(owner) FROM syn t WHERE object_id = 12345;
|
||||
|
||||
@x
|
||||
|
||||
@create_sql_baseline bfwpapz4cfwz2 2966233522 3v3yzqv6dp704
|
||||
|
||||
SELECT COUNT(owner) FROM syn t WHERE object_id = 12345;
|
||||
|
||||
@x
|
||||
|
||||
-- Then point SYN to scott schema and run the same query text
|
||||
DROP SYNONYM syn;
|
||||
CREATE SYNONYM syn FOR scott.t;
|
||||
|
||||
SELECT COUNT(owner) FROM syn t WHERE object_id = 12345;
|
||||
|
||||
@x
|
||||
|
||||
@drop_sql_baseline SQL_547b571057dbd3d4
|
||||
Reference in New Issue
Block a user