最佳答案
我想优化我的查询,所以我查看 mysql-slow.log
。
我的大多数慢速查询包含 ORDER BY RAND()
。我找不到解决这个问题的真正办法。在 MySQLPerformanceBlog有一个可能的解决方案,但我认为这还不够。在优化不佳(或经常更新,用户管理)的表上,它不起作用,或者在选择 PHP
生成的随机行之前,我需要运行两个或更多查询。
这个问题有解决办法吗?
一个虚拟的例子:
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