Witam,
wiem, że było już o tym kilka tematów ale przedstawione tam rozwiązania są zbyt nieoptymalne. To co było tam podane nadaje się co najwyżej do tablicy zawierającej 100 rekordów, a ja mam niestety ponad 50 tysięcy więc muszę wymyśleć jakiś alternatywny sposób.

Skracając trochę zapytanie, które używam na potrzeby tego problemu, wygląda one tak:
  1. SELECT * FROM tabela WHERE points>0 ORDER BY Rand()*(1/points) LIMIT 5


Problem sprawia tutaj klauzula ORDER BY.. próba sortowania tablicy 50k rekordów co około 2 sekundy, to samo(/serwero)bójstwo :|

W jaki inny sposób mogę to zrealizować, nawet jakbym miał losować po jednym rekordzie a nie pięć naraz? Bardzo mi zależy na prędkości działania, mogą być w tym jeszcze jakieś wstawki z PHP bo na nim opiera się cały skrypt.

Osoby słabo znające się na MySQLu proszę o nie odpowiadanie, jeżeli nie rozumiecie tematu... Te zagadnienie niestety nie wygląda na proste.