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?

Foutje in de titel.. MY moest natuurlijk BY zijn.
Ik kan mijzelf niet indenken dat deze functie traag is, maar je database. Ik vermoed dat het om een grote database gaat en een heleboel records?
@Aar,

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".
En hoe zit het met je INDICES op je kolommen?
DavY Blaat op 29/07/2015 09:16:51

Ik krijg regelmatig "bad gateway".

Ja, ik heb er ook last van en heb het even gemeld.
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.
In aanvulling op Ward:

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.
Sorry voor late reacties jongens. Bedankt voor jullie reacties. Na lang testen en uitzoeken, ben ik er inmiddels uitgekomen wat het beste is.

Reageren