Ich rufe Funktion in Auswahlabfrage auf. View liest Datensätze aus der Tabelle, die etwa 1 Million Datensätze enthält. Wenn ich RESULT_CACHE-Schlüsselwort in Funktion schreibe, werde ich in Sekundenbruchteilen ausgegeben. Ich habe Zweifel, dass, wenn der Wert einer Spalte geändert wird, die innerhalb der Ansicht verwendet wird, wird Funktion diesen neuen Wert berücksichtigen?Wird das RESULT_CACHE-Schlüsselwort aktualisierte Daten von der Funktion in Oracle zurückgeben?
Antwort
Nach meinem Wissen wird RESULT_CACHE Ihnen die Daten aus dem Oracle-speziellen In-Memory-Ergebnis-Cache zur Verfügung stellen.
Wenn Sie ein aktualisiertes Ergebnis erhalten möchten, können Sie RESULT_CACHE RELIES_ON (TABLE NAME) verwenden.
Wenn Ihre DB-Version jedoch 11,2 oder höher ist, ist die RELIES ON-Klausel nicht erforderlich, da sie Abhängigkeiten automatisch verfolgt und die zwischengespeicherten Ergebnisse bei Bedarf ungültig macht.
Die Klausel "less_on" ist in Oracle 11.2 –
veraltet. Eigentlich wird 'RELIES_ON' in Oracle 11.2+ ignoriert * –
@ Jeffrey, können Sie bitte den Link zum besseren Verständnis angeben. – chetan
Ja ich denke, es wird Ihre Daten aktualisieren. Aber nach dem Aktualisieren der Daten Es wird Zeit brauchen, um das erste Mal auszuführen.
können Sie Code Snap teilen? –
Bitte geben Sie das Codebeispiel an. damit wir dir helfen können. – Hardy
Unter bestimmten Umständen wird das Funktionsergebnis unabhängig von der Einstellung RESULT_CACHE im Rahmen der Ausführung in einer einzigen SQL-Anweisung zwischengespeichert, je nachdem, ob es sich um deterministische Änderungen handelt oder um Änderungen an den Eingabeparametern. Sind Sie sicher, dass Sie RESULT_CACHE benötigen? –