我看到人们编写SQL查询,例如,
select count(*)
from xxx_table
where yyy='abc'
limit 0
想知道这里有什么限制0?提到了一些文件和讨论,仍然感到困惑。
答案 0 :(得分:14)
根据MySQL docs:
LIMIT 0快速返回空集。这对于检查查询的有效性非常有用。如果您使用的MySQL API可以使结果集元数据可用,它也可用于获取结果列的类型。
答案 1 :(得分: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。
SELECT *
FROM Persons
LIMIT 5;
SELECT TOP 2 * FROM Persons;
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)
结论-就像其他人所说的,有效性的速度似乎是一个不错的猜测。在具有联接,联合,积分等的更复杂的查询中,这可能更明显。