Database Reference
In-Depth Information
18.6
Hidden SQLs (das Ersetzen der SQL-Anweisungen ohne
Programmcodeänderung)
In einigen Situationen ist die Performanz einer SQL-Anweisung nur durch eine Änderung
dieserSQL-Anweisungzuverbessern.DieUmsetzungdieserLösungstelltkeinProblem
dar,wenndieProgrammentwicklerinGreifweitesind.WennesnichtderFallistoder
wenndieProblemlösungsehrschnellumgesetztwerdenmuss,kanneventuelldieindie-
sem Abschnitt beschriebene Methode helfen.
BeiOraclegibteseindokumentiertesPackageDBMS_ADVANCED_REWRITE,das
eineErsetzungderSQL-AnweisungenohneProgrammänderungermöglicht.MitderPro-
zedur DBMS_ADVANCED_REWRITE.DECLARE_REWRITE_EQUIVALENCE setzt
mandieÄquivalenz(rewriteequivalences)von2SQL-AnweisungenalsdieGrundlagefür
einesolcheErsetzungfest.DafürbrauchtmandasPrivilegEXECUTEfürdiesesPackage
unddasPrivileg„CREATEMATERIALIZEDVIEW“.DamitdiejeweiligeErsetzungstatt-
findet, sind auch die folgenden 2 Parametereinstellungen notwendig: query _ rewrite _ ena -
bled = true und query _ rewrite _ integrity < > enforced . Die Parametereinstellung que -
ry _ rewrite _ integrity < > enforced kannunerwünschteEffekteverursachen,wenneinige
MViews(materializedviews)imSystemvorhandensind.UmsolcheEffekteauszuschlie-
ßen, ist es sinnvoll, dieses Verfahren etwas nachzubessern.
DasimAbschn. 13.2beschriebeneHintOPT_PARAMermöglichtdedizierteAnwen-
dung dieser beiden Parametereinstellungen für eine einzige SQL-Anweisung (für die an-
deren SQL-Anweisungen gelten diese Parametereinstellungen nicht). Wenn man dafür ein
SQL Profile anlegt (s. im Abschn.  18.7.2), kann man das ohne Änderung der SQL-An-
weisung erreichen. Diese Ergänzung der Standardmethode hat noch einen Vorteil. Die
Anwendung der SQL Profiles hinterlässt im System ihre Spuren (s. im Abschn. 14.2.3), die
Anwendung der Äquivalenzen kann hingegen absolut unbemerkbar erfolgen. Verwendet
mansprechendeNamenfürdiejeweiligenSQLProfiles(z. B.NamenmitAQRfür„ad-
vancedqueryrewrite“amAnfang),erkenntmanleicht,dassdiejeweiligeErsetzungder
SQL-Anweisungen stattfand.
Wenden wir diese Methode auf die folgende SQL-Anweisung mit dem Skript test_case_
adv_query_rewrite.sql an:
Search WWH ::




Custom Search