我看到人们写SQL查询,例如:
select count(*)
from xxx_table
where yyy='abc'
limit 0
想知道这里的“limit 0”是什么意思?查阅了一些文档和讨论,但仍感到困惑。
我看到人们写SQL查询,例如:
select count(*)
from xxx_table
where yyy='abc'
limit 0
想知道这里的“limit 0”是什么意思?查阅了一些文档和讨论,但仍感到困惑。
SELECT COUNT..
会生成一行结果(就像其他许多 SELECT
语句一样),但你看不到它。 - Artur Opalinski我终于找到了一些有用的东西,当我为您创建演示时,请使用以下提到的代码片段检查执行计划,比较limit 0和1。
http://sqlfiddle.com/#!9/82a8f0/5
我发现,在执行中,如果我们使用Limit 0,它不会考虑表格。请查看上面提到的我的SQL Fiddle。
注意:我仅创建了一个简单的表格来检查演示中的执行计划差异。
count(*) from abc limit 0
不会返回或不执行任何操作吗?还是你想证明其他什么? - Lin MaLIMIT子句用于在MYSQL中返回输出中的行数,它类似于SQL SERVER中的TOP子句和ORACLE中的ROWNUM子句。
例如:
SELECT *
FROM Persons
LIMIT 5;
SELECT TOP 2 * FROM Persons;
SELECT *
FROM Persons
WHERE ROWNUM <=5;
在语句之前运行 explain 并且有限制条件 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 输出)
结论 - 正如其他人所说,有效性的速度似乎是一个很好的猜测。这可能在更复杂的查询中更明显,例如连接、联合、交集等。
limit 0
时使用count(*)
,我认为count(*)
应该返回1行(即在某些条件下记录的计数,应该只返回一条记录/行)。所以,我认为添加或不添加limit 0
不应该有差别-因为limit 0
表示第一行(这是count(*)
返回的唯一一行)。欢迎提供任何意见。:) - Lin Ma