Itu terdengar seperti paket DBMS_ADVANCED_REWRITE . Tim Hall memiliki walk-through yang sangat baik dalam menggunakan paket itu untuk mengarahkan pertanyaan aplikasi terhadap tabel atau tampilan yang berbeda .
Jika Anda hanya ingin mengubah rencana kueri tetapi tidak mengarahkan kueri pada tabel yang berbeda, Anda dapat menggunakan garis besar yang tersimpan atau profil SQL.
Sebagai contoh, saya punya tabel FOO
dengan 1 baris dan BAR
dengan 2 baris
SQL> select * from foo;
COL1
----------
1
SQL> select * from bar;
COL1
----------
66
77
Saya dapat mendeklarasikan ulang kesetaraan yang mengatakan bahwa kueri terhadap FOO
sebaliknya seharusnya mengenaiBAR
begin
sys.DBMS_ADVANCED_REWRITE.DECLARE_REWRITE_EQUIVALENCE(
'Rewrite_Foo',
'select col1 from foo',
'select col1 from bar',
false,
'TEXT_MATCH' );
end;
Sekarang, jika saya disetel query_rewrite_integrity
ke tepercaya, kueri agar tidak FOO
mengenai tabel yang sama sekali berbeda.
SQL> alter session set query_rewrite_integrity=trusted;
Session altered.
SQL> select * from foo;
COL1
----------
66
77
Itu dapat membuat beberapa rencana permintaan yang agak menarik di mana objek yang Anda tanyakan tidak ditemukan di dalam paket tersebut
SQL> select * from foo;
COL1
----------
66
77
Execution Plan
----------------------------------------------------------
Plan hash value: 4224476444
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 2 | 26 | 3 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| BAR | 2 | 26 | 3 (0)| 00:00:01 |
--------------------------------------------------------------------------
Note
-----
- dynamic sampling used for this statement (level=2)
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
7 consistent gets
0 physical reads
0 redo size
584 bytes sent via SQL*Net to client
523 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
2 rows processed