Citat:
Ursprungligen postat av naak2803
Exakt, det är just det som är problemet, inte att den inte slumpar slumpmässigt utan att om man ställer samma fråga flera ggr så är det oftast samma frågor som dyker upp, fast det finns 1000 frågor att välja mellan.
|
Förmodligen beror det isåfall antingen på någon cache på SQL-frågan, dock tror jag standardlösningen med inbyggda query cache ska inaktiveras automatiskt vid en RAND(). Alternativt är MySQL en version där RAND() var buggat.
Vidare har du, förutsatt att du använder MySQL av något sånär modernt snitt, inte postat din riktiga query varpå det blir svårt att hjälpa till:
- RND() är ingen inbyggd funktion i MySQL
- LIMIT kan inte läggas innan ORDER BY
Vidare är det väldigt ineffektivt sätt att hämta slumpmässiga rader att köra en SELECT * FROM ... ORDER BY RAND() LIMIT x. Queryn behöver göra en full table scan och skalar därmed inte alls. För att göra den 50 ggr effektivare kan du lösa det med en subquery där du kör en SELECT <primary key> FROM table ORDER BY RAND() LIMIT x varpå du iallalfall bara behöver läsa hela primärnyckeln (oftast från minnet). Men vill du faktiskt göra det effektivt får du titta på riktigt alternativ istället - Googla "order by rand() alternatives" och hitta en metod som fungerar i ditt case.