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
);