wpforge
Goto Top

MYSQL wird RAND langsam?

Hallo,
Ich habe eine große Tabelle (~ 1 Mio Einträge) in einer MYSQL DB.
Aus dieser wird nun per "SELECT * FROM table WHERE processed = 0 ORDER BY RAND() LIMIT 1" ein Eintrag geholt.

Nun nimmt die Performance des gesamt Konstruktes stetig ab.
Kann es sein, dass die Funktion langsamer wird, je weniger Einträge für die Ausgabe in Frage kommen?

Danke schon mal für eure Antworten

Content-ID: 400366

Url: https://administrator.de/contentid/400366

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

138721
138721 03.02.2019 aktualisiert um 12:32:00 Uhr
Goto Top
MYSQL: Query order by rand() very slow
ORDER BY RAND() causes the engine to generate random values for all rows, so if you want to select a few rows from a large table, it gives very bad performance.

--> How can i optimize MySQL's ORDER BY RAND() function?

Gruß l
WPFORGE
WPFORGE 03.02.2019 um 12:43:12 Uhr
Goto Top
Das habe ich schon auch gefunden.
Was mich verwirrt, ist dass sich die Größe der Tabelle nicht ändert (zumindest nicht wesentlich).
Nur die in Frage kommenden Rückgabewerte werden weniger.
138721
138721 03.02.2019 aktualisiert um 12:55:39 Uhr
Goto Top
Zitat von @WPFORGE:
Was mich verwirrt, ist dass sich die Größe der Tabelle nicht ändert (zumindest nicht wesentlich).
Nur die in Frage kommenden Rückgabewerte werden weniger.
Logisch, bis er den ersten Eintrag gefunden hat der in der Spalte processed = 0 ist dauert es eben länger je weniger davon vorhanden sind. Vermeide RAND (s. Link oben) oder lege einen Index für die Spalte an.