2016-05-17 3 views
0

Ich habe vor kurzem mit Oracle-Datenbank gearbeitet, um einige Berichte zu generieren. Was ich brauche, ist Ergebnissätze bestimmter Datensätze zu erhalten (nur SELECT-Anweisung), manchmal sind es große Datensätze, die zum Generieren des Berichts in der Excel-Datei verwendet werden.ORACLE - Was ist besser, um eine große Ergebnismenge von Datensätzen zu erstellen, Ansicht, SP oder Funktion

Zuerst werden die Berichte in Sichten abgefragt, aber einige von ihnen sind langsam (haben einige komplexe Unterabfragen). Ich wurde gebeten, die Leistung zu erhöhen und auch einige Feldzuordnungen zu korrigieren. Ich möchte auch Dinge aufräumen, denn wenn ich gegen View abfrage, muss ich den richtigen Spaltennamen aufrufen. Ich möchte die Datenwerke in die Datenbank und die Web-App nur für die Übergabe von Parametern trennen und die richtige Ergebnismenge aufrufen.

Ich bin neu in Oracle, also was ist besser, diese Art von Aufgabe zu tun? SP oder Funktion verwenden? oder in welchem ​​Zustand ist View vielleicht besser?

Antwort

1

Solange Sie in der Lage sind, Ihre Anforderungen mit den Ansichten zu erfüllen, sollten sie eine gute Option sein. Wenn Sie beabsichtigen, Ihre Abfragen in mehrere zu zerlegen, um eine bessere Leistung zu erzielen, sollten Sie nach gespeicherten Prozeduren suchen. Wenn Sie sich für eine gespeicherte Prozedur entscheiden, ist es ratsam, ein Paket zu erstellen und alle gespeicherten Prozeduren zusammen im Paket zu bündeln. Wenn Ihr Problem Leistung ist, dann gibt es möglicherweise keine Silberkugel Lösung für die gleiche. Sie müssen an Ihren Abfragen arbeiten und für dasselbe entwerfen.

+0

Vielen Dank. Nach einigen Recherchen in den Dokumentationen, und unterstützt durch Ihre Antwort, denke ich, dass Verfahren in Paketen für meine Arbeit geeignet sind. – grayfield

2

Es macht keinen Unterschied, ob Sie Ihre SQL in einer Ansicht, SP oder Funktion kompilieren. Es ist das SQL selbst, das zählt.

+0

Danke. Ich weiß, dass die Leistung der Abfrage von der Abfragestruktur selbst abhängt. Aber ich möchte ein modulares oder Blöcke von Abfrage erstellen, die einen bestimmten Zweck haben, und die Select-Abfrage von meiner Web-App trennen. – grayfield

+0

Für einen modularen Ansatz wäre meine erste Wahl eine Tabellenfunktion –

1

Wenn das Problem Leistung aufgrund komplexer SELECT-Abfrage (Abfragen) ist, können Sie Tuning die Abfragen berücksichtigen. Häufig finden Sie Anfragen, die vor 15-20 Jahren geschrieben wurden und die keine Funktionalität und Techniken verwenden, die von Oracle in neueren Versionen eingeführt wurden (selbst wenn die Organisation das große Geld ausgegeben hat, um die neueren Versionen zu kaufen) Geld). Ehrlich gesagt, ist das eine zu große Aufgabe für Sie, wenn Sie neu bei Oracle sind. Außerdem wurden vielleicht vor vielen Jahren einige langsame Abfragen von Leuten geschrieben, die genau wie Sie waren - bevor sie eine Chance hatten, viel über Oracle zu lernen und Erfahrungen damit zu sammeln.

Eine andere Sache, wenn die Berichte nicht den absoluten aktuellen Status der zugrunde liegenden Tabellen verwenden müssen (z. B. wenn "Was war in den Tabellen am Ende des gestrigen Geschäftstages" akzeptabel ist), können Sie Erstellen Sie eine materialisierte Ansicht. Es wird nicht schneller als eine reguläre Ansicht funktionieren, aber es kann über Nacht (sagen wir) oder alle sechs Stunden oder was auch immer laufen - so dass die weitere Berichterstellung von dort nicht auf den Abschluss der Abfragen warten muss. Dies ist eine der Hauptverwendungen von materialisierten Ansichten.

Viel Glück!

Verwandte Themen