SQL LIMIT 排序如何运作

How does SQL LIMIT ordering work

如果您从 sql 数据库中 select 并添加限制,并且多次 运行 ,结果会有所不同。但是,当您想从数据库中随机 select 时,您通常会这样做:

order by random()
limit n

我的问题是 sql 限制订购是如何工作的。如果它不是随机的,那么结果是如何变化的?

LIMIT 不进行排序,期间。如果您想要特定的顺序,请使用 ORDER BY

如果未指定 ORDER BY,则不会以任何特定顺序返回行。它们可能与 运行 运行 相同,但它取决于与从基础数据文件、索引或连接顺序检索行有关的各种事情。无论在未指定 ORDER BY 时控制顺序的是什么,您都应该 而不是 依赖它。

每个厂商的实现不同,但一般都是生成整个结果集,如果存在则应用ORDER BY,然后服务器只给客户端returns n行.

请注意,没有 ORDER BY 的 LIMIT 或 TOP 是不确定的。也就是说,不保证执行之间的结果是一致的。