Jak mogę zoptymalizować funkcję ORDER BY RAND () MySQL?

Chciałbym zoptymalizować moje zapytania, więc sprawdzammysql-slow.log.

Większość moich powolnych zapytań zawieraORDER BY RAND(). Nie mogę znaleźć prawdziwego rozwiązania, aby rozwiązać ten problem. Tam jest możliwe rozwiązanieMySQLPerformanceBlog ale nie sądzę, żeby to wystarczyło. W przypadku źle zoptymalizowanych (lub często aktualizowanych, zarządzanych przez użytkowników) tabel nie działa lub muszę uruchomić dwa lub więcej zapytań, zanim będę mógł wybrać mójPHPgenerowany losowy rząd.

Czy istnieje rozwiązanie tego problemu?

Fałszywy przykład:

SELECT  accomodation.ac_id,
        accomodation.ac_status,
        accomodation.ac_name,
        accomodation.ac_status,
        accomodation.ac_images
FROM    accomodation, accomodation_category
WHERE   accomodation.ac_status != 'draft'
        AND accomodation.ac_category = accomodation_category.acat_id
        AND accomodation_category.acat_slug != 'vendeglatohely'
        AND ac_images != 'b:0;'
ORDER BY
        RAND()
LIMIT 1

questionAnswers(8)

yourAnswerToTheQuestion