我有查询可以获得10个随机帖子,而且你知道这是一个非常缓慢而繁重的查询,有没有其他选择提交这个查询而没有任何缓慢的外观?
我当前的rand查询:
SELECT * FROM posts ORDER BY RAND() LIMIT 10
答案 0 :(得分:0)
来自MySQL文档:
SELECT * FROM tablename ORDER BY RAND()LIMIT 1
适用于小型表,但是一旦表大于300,000条记录,这将非常慢,因为MySQL必须处理表中的所有条目,随机排序然后返回有序结果的第一行,这种排序需要很长时间。相反,你可以这样做(至少如果你有一个auto_increment PK):
SELECT MIN(id),MAX(id)FROM tablename;
将结果提取到$ a
// php code
$ ID =兰特($一个[0],$ A [1]);
SELECT * FROM tablename WHERE id> ='$ id'LIMIT 1