usar una tipo ser que puede primaria modificar llave insertar hacer foranea dependencias dato crear como clave alfanumerica sql primary-key indexing

sql - modificar - que tipo de dato puede ser una llave primaria



¿Cuándo debería usar la clave principal o el índice? (5)

Diferencias

Una tabla solo puede tener una clave principal , pero varios índices .

Una clave principal es única , mientras que un índice no tiene que ser único . Por lo tanto, el valor de la clave primaria identifica un registro en una tabla, el valor del índice no necesariamente.

Las claves principales generalmente se indexan automáticamente; si crea una clave principal, no es necesario crear un índice en la (s) misma (s) columna (s).

Cuándo usar qué

Cada tabla debe tener una clave principal . Defina una clave principal que garantice la identificación única de cada registro.

Si hay otras columnas que suele utilizar en las uniones o en las condiciones, un índice puede acelerar sus consultas . Sin embargo, los índices tienen una sobrecarga al crear y eliminar registros, algo a tener en cuenta si realiza grandes cantidades de inserciones y eliminaciones.

¿Cuál es el mejor?

Ninguno realmente, cada uno tiene su propósito. Y no es que realmente puedas elegir uno u otro.

Recomiendo siempre preguntarse primero cuál es la clave principal de una tabla y definirla.

Agregue índices según su experiencia personal , o si el rendimiento está disminuyendo. Mida la diferencia, y si trabaja con SQL Server, aprenda cómo leer los planes de ejecución.

¿Cuándo debería usar una clave principal o un índice?

¿Cuáles son sus diferencias y cuál es el mejor?


Básicamente, una clave principal es (en el nivel de implementación) un tipo especial de índice. Específicamente:

  • Una tabla puede tener solo una clave principal, y con muy pocas excepciones, cada tabla debe tener una.
  • Una clave principal es implícitamente UNIQUE : no puede tener más de una fila con la misma clave principal, ya que su objetivo es identificar filas de manera única.
  • Una clave principal nunca puede ser NULL , por lo que la (s) fila (s) en que se basa no debe ser NULL

Una tabla puede tener múltiples índices, y los índices no son necesariamente UNIQUE . Los índices existen por dos razones:

  • Para hacer cumplir una restricción uniquness (estos pueden crearse implícitamente cuando declaras una columna ÚNICA)
  • Para mejorar el rendimiento. Las comparaciones de igualdad o "mayor / menor que" en las cláusulas WHERE, así como en las UNIONES, son mucho más rápidas en las columnas que tienen un índice. Pero tenga en cuenta que cada índice disminuye el rendimiento de actualización / inserción / eliminación, por lo que solo debe tenerlos donde realmente se necesiten.

Esto podría ayudar a volver a lo básico: diferencia entre la clave principal y el índice único

Las diferencias entre los dos son:

  1. Las columnas que crean la clave principal de una tabla no pueden ser NULL dado que, por definición, la clave principal no puede ser NULL, ya que ayuda a identificar de forma única el registro en la tabla. La (s) columna (s) que conforman el índice único pueden ser anulables. Una nota que vale la pena mencionar aquí es que diferentes RDBMS tratan esto de manera diferente -> mientras SQL Server y DB2 no permiten más de un valor NULL en una columna de índice única, Oracle permite múltiples valores NULL. Esa es una de las cosas a tener en cuenta al diseñar / desarrollar / portar aplicaciones en RDBMS.
  2. Solo puede haber una clave principal definida en la tabla donde puede tener muchos índices únicos definidos en la tabla (si es necesario).
  3. Además, en el caso de SQL Server, si elige las opciones predeterminadas, se crea una clave principal como un índice agrupado mientras que el índice único (restricción) se crea como un índice no agrupado. Sin embargo, este es solo el comportamiento predeterminado y puede modificarse en el momento de la creación, si es necesario.

La clave principal es, por definición, única : identifica cada fila individual. Siempre quiere una clave principal en su mesa, ya que es la única forma de identificar las filas.

Un índice es básicamente un diccionario para un campo o conjunto de campos. Cuando solicite a la base de datos que busque el registro donde algún campo equivale a algún valor específico, puede buscar en el diccionario (índice) las filas correctas. Esto es muy rápido, porque al igual que un diccionario, las entradas se ordenan en el índice que permite una búsqueda binaria. Sin el índice, la base de datos tiene que leer cada fila en la tabla y verificar el valor.

Por lo general, desea agregar un índice a cada columna que necesita filtrar. Si busca en una combinación específica de columnas, puede crear un índice único que contenga todas esas columnas. Si lo hace, el mismo índice se puede usar para buscar cualquier prefijo de la lista de columnas en su índice. En pocas palabras (si es un poco inexacta), el diccionario contiene entradas que consisten en la concatenación de los valores utilizados en las columnas, en el orden especificado, para que la base de datos pueda buscar entradas que comiencen con un valor específico y aún utilicen la búsqueda binaria eficiente. esta.

Por ejemplo, si tiene un índice en las columnas (A, B, C), este índice se puede usar incluso si solo filtra en A, porque esa es la primera columna del índice. De forma similar, puede usarse si filtra tanto A como B. No obstante, no puede usarse si solo filtra en B o C, porque no son un prefijo en la lista de columnas; necesita otro índice para acomodar ese .

Una clave principal también sirve como un índice, por lo que no necesita agregar un índice que converja las mismas columnas que su clave principal.


Las claves y los índices son conceptos bastante diferentes que logran cosas diferentes. Una clave es una restricción lógica que requiere que las tuplas sean únicas. Un índice es una función de optimización del rendimiento de una base de datos y, por lo tanto, es una característica física en lugar de lógica de la base de datos.

La distinción entre los dos es a veces borrosa porque a menudo se usa una sintaxis similar o idéntica para especificar restricciones e índices. Muchos DBMS crearán un índice por defecto cuando se creen restricciones clave. El potencial de confusión entre clave e índice es desafortunado porque separar las preocupaciones lógicas y físicas es un aspecto muy importante de la gestión de datos.

En lo que respecta a las claves "primarias". No son un tipo de clave "especial". Una clave principal es cualquier clave candidata de una tabla. Hay al menos dos formas de crear claves candidatas en la mayoría de los DBMS SQL y eso es usar la restricción PRIMARY KEY o usar una restricción UNIQUE en las columnas NOT NULL. Es una convención ampliamente observada que cada tabla SQL tiene una restricción PRIMARY KEY en ella. Usar una restricción PRIMARY KEY es una sabiduría convencional y una cosa perfectamente razonable, pero generalmente no hace ninguna diferencia práctica o lógica porque la mayoría de los DBMS tratan todas las claves como iguales. Ciertamente, cada tabla debe hacer cumplir al menos una clave candidata, pero no importa si dicha clave (s) se aplica por PRIMARY KEY o por restricciones UNIQUE. En principio, son claves candidatas que son importantes, no claves "primarias".