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ójPHP
generowany 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