Mysql Abfrage effizienter machen
Suche nach Tipps, wie ich die folgende Query schneller machen kann
Hallo allerseits,
wieder wende ich mich mit einem kleinen Problemchen an euch!
Die folgende Query klappt zwar, ist aber sehr langsam, zumal die tabellen relativ gross sind, die da durchgeackert werden.
Gibt es da den einen oder anderen Kniff, diese Abfrage zu beschleunigen?
Würde es Sinn machen, das DATEDIFF in den WHERE Bereich zu stecken ?
Vielen Dank im voraus,
lg, Chris
PS: Das DISTINCTMAX(k.k_id) habe ich schon gekillt, k_id wird ausserdem nicht benötigt.
Hallo allerseits,
wieder wende ich mich mit einem kleinen Problemchen an euch!
Die folgende Query klappt zwar, ist aber sehr langsam, zumal die tabellen relativ gross sind, die da durchgeackert werden.
Gibt es da den einen oder anderen Kniff, diese Abfrage zu beschleunigen?
$last_q_r = "SELECT DISTINCT MAX(k.k_id), k.user_id, k.interessenten_id, k.objekt_id, MAX(k.k_erstellt) AS max_k_erstellt
FROM ".TABLE_KONTAKTE." k, ".TABLE_OBJEKTE." o
WHERE k.kontaktart < '90'
AND k.objekt_id = o.o_id
AND o.verkauft != '1'
GROUP BY k.interessenten_id, k.user_id, k.objekt_id
HAVING DATEDIFF(NOW(), max_k_erstellt) > ".(int)$idle_days." ";
Würde es Sinn machen, das DATEDIFF in den WHERE Bereich zu stecken ?
Vielen Dank im voraus,
lg, Chris
PS: Das DISTINCTMAX(k.k_id) habe ich schon gekillt, k_id wird ausserdem nicht benötigt.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 172232
Url: https://administrator.de/forum/mysql-abfrage-effizienter-machen-172232.html
Ausgedruckt am: 26.12.2024 um 22:12 Uhr
3 Kommentare
Neuester Kommentar
Servus,
als erstes würde ich mal Indexes empfehlen, da ja die Tabellen Deiner Aussage nach recht groß sind:
k.objekt_id und k.kontaktart sind erstmal gute Kandidaten.
Als nächstes fällt mir auf, dass du k.kontaktart mit kleiner als abfrägst und dann ein Char angibst.
Welchen Typ hat denn die Spalte k.kontaktart? Number oder VarChar o. ä.?
Hier sollte sie Number haben, da ansonsten noch eine implizite Konvertierung von Nöten ist, die natürlich Zeit frisst..
Vielleicht hilft's ja schon, ansonsten muss man noch tiefer graben
so long,
pi
als erstes würde ich mal Indexes empfehlen, da ja die Tabellen Deiner Aussage nach recht groß sind:
k.objekt_id und k.kontaktart sind erstmal gute Kandidaten.
Als nächstes fällt mir auf, dass du k.kontaktart mit kleiner als abfrägst und dann ein Char angibst.
Welchen Typ hat denn die Spalte k.kontaktart? Number oder VarChar o. ä.?
Hier sollte sie Number haben, da ansonsten noch eine implizite Konvertierung von Nöten ist, die natürlich Zeit frisst..
Vielleicht hilft's ja schon, ansonsten muss man noch tiefer graben
so long,
pi