Switch to full style
Alles zur Datenbankentwicklung im Oracle-Umfeld...
Antwort erstellen

Performance SQL-Abfrage

Do 29. Nov 2018, 15:02

Guten Tag Zusammen

Ich bin neu hier und noch ganz am Anfang von der Lernkurve :)...

Ich stehe vor einen performance Problem bei einer SQL abfrage welche ich dann von als Webservice anbieten möchte.
Mit Indizien konnte ich eine Verbesserung erstellen, jedoch braucht diese abfrage noch 4-6 Sekunden, was im Webbereich einfach zu lang ist.

Die Select abfrage sieht momentan so aus, welche unter Umständen in einer Session mehrfach (mit anderen Meteringcode) abgerufen wird:

select meteringcode, type, timestamp from messdaten15min
where meteringcode = 'CH10179012345000000001800250EM001'
and type= 1
and rownum = 1
order by timestamp desc;

/
Meteringcode Type Timestamp
---------------------------------------------------------------------------------------------
CH1011001234500000000290025000001 1 01.12.18 00:00:00.000000000

Gibt es eine Möglichkeit eine art dynamisch Tabelle/View zu machen aus Oracle selber, welche eine solche liste (die jeweils nur immer mit dem aktuellsten Timestamp) enthält?

Vielen Dank im voraus.

MfG
jensh

Re: Performance SQL-Abfrage

Mi 5. Dez 2018, 21:47

Hallo jensh,

wenn Du in den Bereich Performance-Tuning gehen willst, dann sind folgedne Fragen wichtig:

- Wie groß ist die Tabelle (RowCount?)
- Wie breit ist die Tabelle (Anzahl an Spalten)
- Werden die richtigen Datentypen eingesetzt?
- Warum werden im WHERE-Bereich alphanumerische Werte gesucht?

Wenn Du mir diese Fragen beantworten kannst, können wir weiter analysieren.

Gruß,
SQLUnion

Re: Performance SQL-Abfrage

Do 6. Dez 2018, 14:55

Guten Tag

Erstmals vielen Dank für deine Antwort.

- Wie groß ist die Tabelle (RowCount?)
Momentan sind es 82'993'468 Zeilen :? --> wahrscheinlich liegt hier der Hund begraben und es geht einfach nicht schneller und ich muss eine neue Tabelle für explizit diese abfrage erstellen...
select count(*) from messdaten15min
/ 82993468

- Wie breit ist die Tabelle (Anzahl an Spalten)
7 Spalten

-Werden die richtigen Datentypen eingesetzt?
Soweit ich beurteilen kann, ja...
Die Spaltennamen stören mich mehr, die wurden dazumal schlecht gewählt...

- Warum werden im WHERE-Bereich alphanumerische Werte gesucht?
Es wird nach einem String gesucht, da der Messpunkt offiziell gemäß SDAT-Norm Alphanummerisch ist.
Dies ist auch der einzige wert welcher von Seite Webservice bekannt ist, mit dem wird dann der letzte Timestamp und Type abgefragt.

In einer nächsten abfrage werden dann die Messwerte abgefragt (von der gleichen Tabelle). Diese ist dann um einiges performanter.
mfg
Jensh
Antwort erstellen