Hinweise sind Oracle Datenbank-Features , mit der Programmierer Oracle sagen, dass sie bereits wissen, der beste Weg für die Ausführung einer SQL-Abfrage und Bereitstellung von Informationen für diesen Weg , so dass es Oracle erwerben zu ermöglichen. Hinweise sind einfach Befehle, die das Optimierungsprogramm zu sagen, tun, was sie gesagt hat . Vorschlagen Hinweise
Vor Beginn der eigentlichen Arbeit, um eine Anfrage zu beantworten , sieht Oracle um und macht eine Entscheidung darüber, was es denkt, ist der beste Weg , um die Abfrage auszuführen. Dies ist der Optimierer . Er bestimmt die effizienteste Weg, um eine SQL-Anweisung unter Berücksichtigung viele Züge im Zusammenhang mit den Objekten referenziert und die Umstände in der Abfrage angegeben auszuführen.
Auch wenn Sie Ihre Anwendung entwerfen mit intelligenten gestalteten Code , werden Sie feststellen, dass immer noch gibt es Hinweise für Aussagen erforderlich, bevor der Optimierer nach dem " optimalen " execution Pfad . Manchmal kann der Optimierer Hilfe benötigen aufgrund von Mängeln in ihr Modell oder native Probleme bei der Erhebung, Speicherung und Verarbeitung von komplexen Daten . Hinweise zwingen kann der Optimierer den besten Ausführungsplan für eine Abfrage Weg , egal, was die Lücke zu schließen . Allerdings sollte darauf hindeutet, Hinweise für den Optimierer nur wenn absolut notwendig versucht werden , und wenn Sie ein erfahrener Entwickler . Sind
Hint Types
Oracle hat drei Arten von Hinweisen .
Registriert HintThe Verknüpfungshinweis verwendet wird, wenn mehr als eine Tabelle in einer Abfrage verwendet wird . Dieser Hinweis zwingt den Typ des Join- Verfahren, das verwendet wird. Verknüpfungen können in SELECT verwendet werden , UPDATE und DELETE. Die folgenden führenden Hauch schlägt Join :
/* + LEADING ( [@ queryblock ] tablespec [ tablespec ] ... ) * /Tablet
Abfrage Hinta Abfragehinweis wird verwendet, wenn spezifische Logik muss funktional sein, um eine ganze Abfrage , um einen Teil dagegen. Auf der anderen Seite gibt es keine Möglichkeit festzustellen, welcher Teil einer Abfrage mit dem Hinweis verwendet werden. Eine Abfrage hat immer die SELECT, UPDATE , DELETE, INSERT oder MERGE-Anweisung . Der folgende Hinweis kann mit allen von ihnen verwendet werden:
select /* + * TIPP /namefrom empwhere id = 1 ;
Tabelle HintHints , die eine Tabelle angeben, in der Regel , um Tabellen in der DELETE beziehen , SELECT oder UPDATE-Anweisung einer Abfrage , in denen der Hinweis erfolgt , nicht auf Tabellen in allen Ansichten durch die Aussage transportiert. Der Abfrage-Optimierer in der Regel nimmt die besten Optimierungsverfahren ohne Hinweise spezifiziert werden . Doch obwohl Sie eine Tabelle Hinweis im Code angeben , kann die Abfrage-Optimierer ignorieren den Hinweis. Tabelle Hinweise werden ignoriert, wenn die Tabelle nicht von der Abfrage -Optimierer ausgewählt und in der nachfolgenden Abfrage-Plan werden
select /* + * ALL_ROWS /employee_id , last_name , Gehalt, job_idfrom empwhere employee_id = 4689 ; .