Geschwindigkeit Abfrage in SQL

Hallo liebe Helfer,
ich habe mal eine grundsätzliche Frage, welche ich leider nicht selbst überprüfen kann.

Ausgangssituation ist eine Datenbank mit 300.000 Datensätzen mit ca. 70 Datenbankfeldern pro DS.
Es sind natürlich eindeutige Kategorien und IDs vergeben.

Wenn ich nun auf einer Seite eine Ausgabe generiere, auf die nur bestimmte Kriterien zutreffen ergibt sich eine bestimmte Anzahl von SQL Ergebnissen
Select Alles where kriterium = Abfrage(ca. 30.000).
In dieser Query würde das Datum und ca. 10 weitere Felder (true/False bzw. LIKE )ausgewertet werden.
Also eine nette aufwendige Abfrage.

Da sich aber nur 4 x am Tag meine Kriterien ändern, würde ich gerne einen Cronjob einführen, der mir meine Ergebnisse 4 x am Tag in Kategorien aufgeteilt in eine Tabelle zwischenspeichert und dabei nur IDs der zutreffenden Datensätze speichert.
Diese IDs würde ich dann für die eigentliche Ausgabe hernehmen.
Also in etwa so: select Alles where Datensatz ID = Ergebnis ID aus Zwischentabelle. -> Ausgabe…
Dadurch würden sich meine weiteren Abfragen ja nur mit ca. 30.000 DS beschäftigen müssen.

Meine konkrete Frage!!!
Wäre dies eine wesentliche Verbesserung der Performance beim Aufrufen der Seite oder bewegt sich das nur im geringen Maße (unter 1 Sekunde) zu einer jedesmal aufgerufenen Funktion?

Und wie ist es mit der Serverauslastung? Diese wäre doch bestimmt geringer oder?

Vielen Dank schonmal… Andreas

Hallo,

testen kann ich es gerade auch nicht, aber:
Vom Gefühl her müsste die Cronjob vorauswahl schneller sein.
Begründung: die eindeutigen IDs sind gleichzeitg auf Keys und werden von der Datenbank schneller gefunden bzw Indexiert.
Die Abfrage mit der sehr großen WHERE Bedingung bedeutet viel mehr Vergleichsarbeit für die Datenbank (es müssen mehr Felder angetastet werden.)

Wie viel Performence dir die Aktion verschafft ist schwer zu sagen, da sie von vielen Faktoren abhängt:
Festplattengeschwindigkeit
Prozessorgeschwindigkeit
Häufigkeit DER SQL-Abfrage
Häufigkeit anderer SQL-Abfragen
ganz besonders:
RAM-Größe und
Datenbankeinstellungen.

Denn: Wenn dein Ergebnis dennoch so klein ist, dass es vollständig gechached werden kann von der Datenbank würde ich wiederum sagen, dass es quasi keinen unterschied mach: Die Datenbank kriegt alle X Sekunden (?) ein und die selbe Abfrage, registriert dieses und hält daher das Ergebnis schon im Arbeitsspeicher bereit zur Auslieferung.

Grüße
IceDragon

Vielen Dank für die schnelle Antwort!

Ich vergass zu erwähnen, dass die grundsätzliche Abfrage ja nur eine Basis für die Ausgabe darstellt.
Jeder Benutzer bekommt bei seiner Anfrage ja noch zig weitere Parameter für seine Anfrage. Das bedeutet ja, dass die Anfrageergebnisse die 4 x mal am Tag Ergebnisse beinhalten plus seine weiteren Anfragekriterien.

Ich denke unter diesem Gesichtspunkt bin ich auch der Meinung, das eine Zwischentabelle Sinn macht.
Ich habe das gefragt,weil eine Zwischentabelle ja auch wieder eine weitere Fehlerquelle sein kann und/oder zeitliche Veränderungen (also zwischen den 4 x am Tag) dadurch ja auch beser auszuwerten sind.

Ich muss mich halt auch entscheiden, ob 4 x am Tag ausreichend ist oder Aktuell zu sein besser ist.
Wenn ich Börsendaten filtern würde … :smile: nicht auszudenken, aber bei mir gehts um Durchschnittstemperatur und ortsspezifische Ausgaben.

Ich mach das mit der Zwischentabelle und fertig… !
Frohes Schaffen
lieben Gruß
Andreas

Vielen Dank für die schnelle Antwort!

Ich vergass zu erwähnen, dass die grundsätzliche Abfrage ja nur eine Basis für die Ausgabe darstellt.
Jeder Benutzer bekommt bei seiner Anfrage ja noch zig weitere Parameter für seine Anfrage. Das bedeutet ja, dass die Anfrageergebnisse die 4 x mal am Tag Ergebnisse beinhalten plus seine weiteren Anfragekriterien.

Ich denke unter diesem Gesichtspunkt bin ich auch der Meinung, das eine Zwischentabelle Sinn macht.
Ich habe das gefragt,weil eine Zwischentabelle ja auch wieder eine weitere Fehlerquelle sein kann und/oder zeitliche Veränderungen (also zwischen den 4 x am Tag) dadurch ja auch beser auszuwerten sind.

Ich muss mich halt auch entscheiden, ob 4 x am Tag ausreichend ist oder Aktuell zu sein besser ist.
Wenn ich Börsendaten filtern würde … :smile: nicht auszudenken, aber bei mir gehts um Durchschnittstemperatur und ortsspezifische Ausgaben.

Ich mach das mit der Zwischentabelle und fertig… !
Frohes Schaffen
lieben Gruß
Andreas