Mysql “使用”有意义吗;限制1“;在查询中;选择1…“;?
这个问题应该很清楚,但是用它来代替它有什么好处吗Mysql “使用”有意义吗;限制1“;在查询中;选择1…“;?,mysql,sql,database,Mysql,Sql,Database,这个问题应该很清楚,但是用它来代替它有什么好处吗 从表中选择1… 从表中选择1。。。限制1?假设您的表有一百万行 SELECT 1 FROM table ... 将返回值1,一百万次 SELECT 1 FROM table ... LIMIT 1 将返回值1,一次 编辑 您提到您对EXISTS检查特别感兴趣EXISTS在找到第一行后停止处理(这就是为什么在本例中,EXISTS比中的更有效的原因),因此记住这一点,这两个查询之间没有功能上的区别: SELECT * FROM tableA t
从表中选择1…
从表中选择1。。。限制1
?假设您的表有一百万行
SELECT 1 FROM table ...
将返回值1
,一百万次
SELECT 1 FROM table ... LIMIT 1
将返回值1
,一次
编辑 您提到您对
EXISTS
检查特别感兴趣EXISTS
在找到第一行后停止处理(这就是为什么在本例中,EXISTS
比中的更有效的原因),因此记住这一点,这两个查询之间没有功能上的区别:
SELECT *
FROM tableA ta
WHERE EXISTS (
SELECT 1
FROM TableB tb
WHERE tb.ID = ta.ID
);
及
这是两件截然不同的事情。第一个查询将为表中的每条记录检索1
,第二个查询将只返回一条记录。那么,用它来代替另一个有什么好处吗?没有,因为它们不是comparable@Lamak:是的,你说得对。。。我忘了提到,我的意思是检查条目是否存在……注意,在每个现代DBMS中,在存在子查询中使用SELECT 1
与SELECT*
相比,没有任何性能增益,而应该使用SELECT*
。完美的解释,正是我想知道的!非常感谢你,迈克尔!:)请注意,在每个现代DBMS中,在EXISTS
子查询中使用select1
与SELECT*
相比,没有任何性能提升。
SELECT *
FROM tableA ta
WHERE EXISTS (
SELECT 1
FROM TableB tb
WHERE tb.ID = ta.ID
LIMIT 1
);