我正在尝试从数据库中提取具有图片的随机文章。
SELECT FLOOR(MAX(id) * RAND()) FROM `table` WHERE `picture` IS NOT NULL
我的表有 33 MB 大,有 1,006,394 篇文章,但只有 816 篇带图片。我的问题是这个查询需要 0.4640 sek
我需要这个更快。欢迎任何想法。
PS 1. 当然我有一个关于 id 的索引。2.图片字段没有索引。我应该加一个吗?3. 产品名称是唯一的,也是产品编号,但那是不可能的。
测试结果。
@cHao的解决方案在我使用它来选择一个带有图片的随机条目时会更快。(然后是 0.1 秒。但如果我尝试做相反的事情,选择没有图片的随机文章,它会更慢。2 .. 3 秒。
@Kickstart的解决方案在尝试查找带图片的条目时会慢一些,但在尝试查找没有图片的条目时速度几乎相同。平均 0,149 秒。
@bob-kruithof的解决方案对我不起作用。当试图找到一个有图片的条目时,它会选择一个没有图片的条目。
和@ganesh-bora,是的,你是对的,在我的情况下,速度差异约为 5..15 倍。
我要感谢大家的帮助,我决定使用@Kickstart。