没有ORDER BY使用LIMIT是否安全

Cod*_*ode 10 mysql innodb

我正在使用InnoDB.我需要查询从表中获取10条记录是任何顺序.

在没有ORDER BY的情况下使用LIMIT是否安全?会更快吗?

Nir*_*evy 7

这取决于您认为安全的内容 - 如果您想要一致的结果(意思是,只要表的内容不会改变,每次都会得到相同的结果)或者如果您想要特定的结果(最大的,最新的,最旧的,等等) - 那么这需要命令。如果从安全角度来说,您的意思是查询不会崩溃,并且您不关心得到哪个 X 结果 - 那么是的,使用 LIMIT 就可以了(这实际上是由许多 SQL 工具(例如 MySQL Workbench)自动完成的,以加快速度向上)。

就速度而言 - 没有 ORDER BY 会更快,原因有两个:

  1. 订购需要时间。
  2. 使用 LIMIT 允许服务器在找到前 X 个结果时停止。您可以看到使用 的查询比在大表上limit 10运行得更快。limit 100000当你使用ORDER BY时,服务器必须遍历所有结果,因此不能中途停止。

所以,是的,使用 LIMIT 而不使用 ORDER BY 会使速度更快。


Rah*_*thi 5

如果您没有使用 ORDER BY,那么您就没有对记录进行排序,因此它肯定会使您的数据检索速度更快。因此,如果您只是使用 LIMIT,那么与通过 ORDER BY 检索的数据相比,它会更快。但请注意,在这种情况下,数据不会按任何顺序排列。

就安全性而言,我不确定您在考虑哪种安全性,因为仅使用 LIMIT 而不使用 ORDER BY 子句的查询没有潜在危害。

也可以看看文章:ORDER BY ... LIMIT 性能优化