2011-11-16 15 views
10

Me gustaría saber cómo maximizar la velocidad al consultar la presencia de un valor varchar en una columna en una tabla específica. No necesito saber dónde está, o cuántas veces hay, solo quiero un true/false. Por supuesto, la columna tiene un índice.Compruebe el valor si existe en la columna

Ahora, tengo unas pocas cosas:

SELECT exists (SELECT 1 FROM table WHERE column = <value> LIMIT 1); 
+0

Para comprobar si existe un nombre de columna, ver http://stackoverflow.com/a/10636439/287948 –

Respuesta

13

normalmente existe debe regresar tan pronto como la subconsulta encuentra una fila que satisface su cláusula WHERE. Así que creo que su consulta es tan rápida como puede hacerlo.

Me sorprendió un poco que LIMIT 1 parezca que siempre acelera la consulta muy ligeramente. No esperaba eso. Puede ver el efecto con EXPLAIN ANALYZE.

EXPLAIN ANALYZE 
SELECT exists (SELECT 1 FROM table WHERE column = <value> LIMIT 1); 
+0

¿Me puede decir cómo consulta se utiliza comúnmente para este (comprobar si existen con velocidad máxima) – Perlos