限制为0的SQL查询

时间:2016-05-28 05:20:45

标签: sql

我看到人们编写SQL查询,例如,

select count(*) 
from xxx_table 
where yyy='abc' 
limit 0

想知道这里有什么限制0?提到了一些文件和讨论,仍然感到困惑。

5 个答案:

答案 0 :(得分:14)

根据MySQL docs
LIMIT 0快速返回空集。这对于检查查询的有效性非常有用。如果您使用的MySQL API可以使结果集元数据可用,它也可用于获取结果列的类型。

答案 1 :(得分:3)

我认为它仅用于解析查询。

简单方法查询执行步骤为:

  1. 解析查询
  2. 制定执行计划(包括选择要使用的最佳索引)。
  3. 从磁盘中获取数据。

答案 2 :(得分:2)

我终于找到了一些知识渊博的东西,当我为你创建一个演示时,在与极限0和1进行比较时,使用下面提到的小提琴来检查执行计划。

http://sqlfiddle.com/#!9/82a8f0/5

我所看到的是,执行中如果我们使用Limit 0而不是考虑Table.check我上面提到的sqlfiddle。

注意:我只创建了一个简单的表来检查演示中的执行计划差异。

答案 3 :(得分:0)

LIMIT MYSQL 中使用子句在输出中不返回任何行 与 SQL SERVER 中的 TOP 条款和 ORACLE 中的 ROWNUM 条款相同。

E.G。

MYSQL: -

SELECT *
FROM Persons
LIMIT 5;

SQL SERVER: -

SELECT TOP 2 * FROM Persons;

ORACLE: -

SELECT *
FROM Persons
WHERE ROWNUM <=5;

答案 4 :(得分:0)

在有和没有限制0的语句前运行解释会给出不同的结果:

限制为0

"1" "SIMPLE"    \N  \N  \N  \N  \N  \N  \N  "Impossible WHERE"

"1" "SIMPLE"    "{tableName}"   "index" \N  "{someFoundKey}"    "{keyLength}"   \N  "{rowCount}"    "Using index"

(\ N是我的sql gui输出的null)

结论-就像其他人所说的,有效性的速度似乎是一个不错的猜测。在具有联接,联合,积分等的更复杂的查询中,这可能更明显。