Door
DavY -
op 29-07-2015 03:24
gewijzigd op 29-07-2015 03:25
1.701 views
Zoals de titel het al zegt.. ORDER BY RAND() kost ongeveer 20 seconden als je maar 1 kolumn selecteert, maar als je er 2 of 3 selecteert, kost het al gauw 90 seconden, wat dus niet echt efficient is. Iemand die weet hoe het efficienter kan?
Ja, dat klopt. Het gaat ook om een grote database, waarvan er al veel data opgehaald wordt van 1 bepaald user, dus in een loop met een limit van 20/30 is ORDER BY rand al geen optie, omdat het de boel vertraagt. Ik heb het zelf ook getest in mysql commandline, maar ik lees ook veel informatie op google van andere personen die er ook problemen mee hebben.
Heeft deze forum soms problemen? Ik krijg regelmatig "bad gateway".
Waarom wil je de resultaten voor één user in een willekeurige volgorde tonen?
Dat lijkt me de hamvraag: vaak is er namelijk een logischere volgorde om resultaten te tonen (bijvoorbeeld een datum) en die kolom, mét INDEX, kun je dan voor de ORDER BY gebruiken.
Weet je zeker dat het alleen aan ORDER BY RAND() ligt?
20 sec is namelijk erg lang ook al gebruik je dat (ik kan me niet voorstellen dat je zonder de limit bv 20.000 records ophaalt). Ik denk dat je niet goed geindexed hebt.