即使文档声明它随机返回行,但事实并非如此.
它返回"随机选择的行",因为它出现在数据库中而没有任何where/order by子句.这意味着它并不像您想象的那样随机(或随机选择),只是无法确定返回行的顺序.
一旦你order by x DESC limit 5在那里拍了一下,就会返回你选择的最后5行.
要获得随机返回的行,您需要使用以下内容: order by rand() LIMIT 1
但是,如果索引设置不正确,则会对速度产生影响.通常我做一个min/max来获取表中的ID,然后在它们之间做一个随机数,然后选择那些记录(在你的情况下,只是1条记录),这往往比数据库更快这项工作,特别是在大型数据集上