GROUP BY udf()
Tim
- datenbank
Hallo,
ich habe ein SQL Query in dem ich mit Hilfe einer UDF nach einem bestimmten Attribut gruppiere (UDF macht aus einer IPv4 einen Ländernamen).
Die UDF benötigt ca. 0,04 Sek., um ein Ergebnis zu liefern. Die ganze Abfrage am sich dauert aber sehr lange. Gibt es eine Möglichkeit die Abfragedauert deutlich zu reduzieren?
Viele Grüße, Tim.
Hallo
ich glaube damit dir hier jemand weiterhelfen kann, müßtest du schon mal etwas mehr Infos geben und deine SQL Query zeigen.
viele Grüße
hawk
Hallo
ich glaube damit dir hier jemand weiterhelfen kann, müßtest du schon mal etwas mehr Infos geben und deine SQL Query zeigen.viele Grüße
hawk
Okay
Meine Abfrage sieht ungefähr so aus
SELECT *, count(*) as n
FROM table
JOIN table 2 ON (id)
WHERE time <= ? AND time => ?
GROUP BY somevalue, IP2COUNTRY(ipv4)
Dann habe ich es geändert zu:
SELECT *, count(*) as n, IP2COUNTRY(ipv4) AS ipaddr
FROM table
JOIN table 2 ON (id)
WHERE time <= ? AND time => ?
GROUP BY somevalue, ipaddr
Das hat leider auch nichts gebracht. Ist alles viel zu langsam :(
moin,
Das hat leider auch nichts gebracht. Ist alles viel zu langsam :(
du benutzt mysql, sonst hätte dir jedes andere DBMS schon eine fehlermeldung ausgegeben. welche version, wie gross sind deine beiden tabellen, welche spalten haben sie, was genau willst du abfragen, beispieldaten aus beiden tabellen und darauf bezogen eine beispielhafte ergebnisliste.
Ilja
Hi,
Bitte keine Doppelpostings: https://forum.selfhtml.org/?t=199201&m=1339721
cu,
Andreas
Hallo Tim,
Die UDF benötigt ca. 0,04 Sek., um ein Ergebnis zu liefern. Die ganze Abfrage am sich dauert aber sehr lange. Gibt es eine Möglichkeit die Abfragedauert deutlich zu reduzieren?
warum bist Du überrascht? Genau das hatte ich Dir vorhergesagt.
Soll es schneller sein, so nutze ein leistungsfähigeres Datenbankmanagementsystem als MySQL. Ilja hat Dir angedeutet, welches die von Dir benötigte Funktionalität bietet.
Freundliche Grüße
Vinzenz