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-Key: 400366

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

Printed on: April 25, 2024 at 08:04 o'clock

Mitglied: 138721
138721 Feb 03, 2019 updated at 11:32:00 (UTC)
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
Member: WPFORGE
WPFORGE Feb 03, 2019 at 11:43:12 (UTC)
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.
Mitglied: 138721
138721 Feb 03, 2019 updated at 11:55:39 (UTC)
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.