Diferencia entre clave, clave primaria, clave única e índice en MySQL

Resuelto HELP asked hace 13 años • 0 respuestas

¿ Cuándo debo utilizar KEY, PRIMARY KEYy ?UNIQUE KEYINDEX

HELP avatar Oct 02 '10 15:10 HELP
Aceptado

KEYy INDEXson sinónimos en MySQL. Quieren decir lo mismo. En las bases de datos se utilizarían índices para mejorar la velocidad de recuperación de datos. Normalmente, un índice se crea en las columnas utilizadas en las cláusulas JOIN, WHEREy ORDER BY.

Imagine que tiene una tabla llamada usersy desea buscar todos los usuarios que tienen el apellido 'Smith'. Sin un índice, la base de datos tendría que revisar todos los registros de la tabla: esto es lento, porque cuantos más registros tenga en su base de datos, más trabajo tendrá que hacer para encontrar el resultado. Por otro lado, un índice ayudará a la base de datos a saltar rápidamente a las páginas relevantes donde se guardan los registros de 'Smith'. Esto es muy similar a cómo nosotros, los humanos, revisamos un directorio telefónico para encontrar a alguien por el apellido: no comenzamos a buscar en el directorio de principio a fin, siempre que insertemos la información en algún orden que podamos. Úselo para saltar rápidamente a las páginas 'S'.

Las claves primarias y las claves únicas son similares. Una clave principal es una columna, o una combinación de columnas, que puede identificar de forma única una fila. Es un caso especial de clave única . Una tabla puede tener como máximo una clave primaria, pero más de una clave única. Cuando especifica una clave única en una columna, no hay dos filas distintas en una tabla que puedan tener el mismo valor.

Tenga en cuenta también que las columnas definidas como claves primarias o claves únicas se indexan automáticamente en MySQL.

Daniel Vassallo avatar Oct 02 '2010 08:10 Daniel Vassallo

KEY e INDEX son sinónimos.

Debe agregar un índice cuando las mediciones de rendimiento y EXPLAIN le muestre que la consulta es ineficiente debido a que falta un índice. Agregar un índice puede mejorar el rendimiento de las consultas (pero puede ralentizar las modificaciones de la tabla).

Debe utilizar UNIQUE cuando desee restringir los valores de esa columna (o columnas) para que sean únicos, de modo que los intentos de insertar valores duplicados den como resultado un error.

UNA CLAVE PRIMARIA es una restricción única y también implica que la columna NO ES NULA. Se utiliza para darle una identidad a cada fila. Esto puede resultar útil para unirse a otra tabla mediante una restricción de clave externa. Si bien no es necesario que una tabla tenga una CLAVE PRIMARIA, suele ser una buena idea.

Mark Byers avatar Oct 02 '2010 08:10 Mark Byers

La clave principal no permite NULLvalores, pero la clave única sí permite NULLvalores.

Solo podemos declarar una clave principal en una tabla, pero una tabla puede tener varias claves únicas (asignación de columna).

Er.Gaurav singh avatar Nov 22 '2012 14:11 Er.Gaurav singh

PRIMARY KEYY UNIQUE KEYson similares excepto que tienen funciones diferentes. La clave principal hace que la fila de la tabla sea única (es decir, no puede haber 2 filas con exactamente la misma clave). Solo puede tener 1 clave principal en una tabla de base de datos.

La clave única hace que la columna de la tabla en una fila de la tabla sea única (es decir, no hay dos filas de la tabla que puedan tener exactamente el mismo valor). Puede tener más de 1 columna de tabla de clave única (a diferencia de la clave principal, que significa que solo 1 columna de la tabla es única).

INDEXtambién crea singularidad. MySQL (ejemplo) creará una tabla de indexación para la columna que está indexada. De esta manera, es más fácil recuperar el valor de la fila de la tabla cuando la consulta se realiza en esa columna de la tabla indexada. La desventaja es que si realiza muchas actualizaciones, eliminaciones o creaciones, MySQL tiene que administrar las tablas de indexación (y eso puede ser un cuello de botella en el rendimiento).

Espero que esto ayude.

Buhake Sindi avatar Oct 02 '2010 08:10 Buhake Sindi