2011-12-11 9 views
9

Si tengo una clave primaria de decir id y hago una consulta sencilla para la clave tales como,¿Usar "LIMIT 1" acelera una consulta en una clave principal?

SELECT id FROM myTable WHERE id = X 

Va a encontrar una fila y luego dejar de mirar, ya que es una clave principal, o sería es mejor decirle a mysql que limite su selección usando LIMIT 1? Por ejemplo:

SELECT id FROM myTable WHERE id = X LIMIT 1 
+0

¿Por qué no lo intentas? –

+1

¿Cómo puedo intentarlo? Siempre devolverá solo 1 fila, ¡quiero saber si deja de hacer una exploración de tabla completa después de encontrar la clave principal! – cgweb87

+1

@ cgweb87: confirme que mi edición de su pregunta lo aclare, y no más lejos de su intención. –

Respuesta

7

Sí. Aquí no se necesita ninguna exploración de tabla: es una búsqueda basada en claves. Se encuentra la fila correspondiente y ese es el final del procedimiento.

+1

Enfriar gracias .... – cgweb87

+0

¿El uso de "LIMIT 1" acelera una consulta en una clave principal? Sí o No. su respuesta sugiere "no", pero dice "sí". – TarranJones

+0

@TarranJones: No entiendo por qué piensas que sugiere "no". –

3

No hay necesidad de preocuparse por este tipo de "optimización".

Solo se buscará una fila, por contrato de índice único, y la base de datos puede muy rápidamente buscar todas las (1) filas. Es capaz de hacer esto debido a las estructuras subyacentes que respaldan el índice (o la clave primaria) que admiten búsquedas rápidas por valor. No hay escaneo de tabla involucrado. (Generalmente se usa una variante de un B-tree, pero puede ser basada en hash, etc.) Supongo que un optimizador inteligente de consultas también podría transmitir sugerencias adicionales basadas en la restricción única vigente, pero no lo hago. Sé lo suficiente sobre esto.

+0

Gracias, mi base de datos tiene más de 500,000 filas con claves únicas y solo iba a intentar acelerar un poco el rendimiento. – cgweb87

+0

@ cgweb87 Siempre puede ejecutar una prueba. Sospecho que "no hay cambio", pero si descubres una diferencia notable, entonces 1) beneficio 2) escribe la pregunta SO de seguimiento 3) más ganancias :) –

+0

@ cgweb87 No olvides analizar los planes de consulta, así como también medir hora del reloj de pared. –

Cuestiones relacionadas