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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 400366
Url: https://administrator.de/contentid/400366
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
3 Kommentare
Neuester Kommentar
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
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
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.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.