2012-08-02 17 views
7

La pregunta debería ser lo suficientemente claro, pero es que de ninguna ventaja de usar en lugar de¿Tiene sentido usar "LIMIT 1" en una consulta "SELECT 1 ..."?

SELECT 1 FROM table ...

SELECT 1 FROM table ... LIMIT 1?

+1

Esas son dos cosas muy diferentes. La primera consulta recuperará un '1' para cada registro de su tabla y el segundo devolverá solo un registro. Entonces, ¿hay alguna ventaja para usar en lugar de la otra ?, no, porque no son comparables – Lamak

+0

@Lamak: sí, tienes razón ... Olvidé mencionar que quise decir con ventaja para comprobar si existe una entrada .. . – Chris

Respuesta

12

Digamos que la tabla tiene un millón de filas ...

SELECT 1 FROM table ... 

devolverá el valor 1, un millón de veces ...

SELECT 1 FROM table ... LIMIT 1 

devolverá el valor 1, una vez.


EDITAR

Usted menciona que usted está interesado específicamente en lo que respecta a un control de EXISTS. EXISTS detiene el proceso después de que se encontró la primera fila (que es la razón por EXISTS es más eficiente que IN en este caso), así que con esto en mente, no hay una diferencia funcional entre estas dos consultas:

SELECT * 
FROM tableA ta 
WHERE EXISTS (
    SELECT 1 
    FROM TableB tb 
    WHERE tb.ID = ta.ID 
); 

Y

SELECT * 
FROM tableA ta 
WHERE EXISTS (
    SELECT 1 
    FROM TableB tb 
    WHERE tb.ID = ta.ID 
    LIMIT 1 
); 
+0

explicación perfecta, ¡exactamente lo que quería saber! muchas gracias Michael! :) – Chris

Cuestiones relacionadas