sql >> Base de Datos >  >> RDS >> Mysql

¿Diferencias entre ÍNDICE, PRIMARIO, ÚNICO, TEXTO COMPLETO en MySQL?

Diferencias

  • CLAVE o ÍNDICE se refiere a un índice normal no único. Se permiten valores no distintos para el índice, por lo que el índice puede contienen filas con valores idénticos en todas las columnas del índice. Estos índices no imponen ninguna restricción a sus datos, por lo que se utilizan solo para el acceso, para llegar rápidamente a ciertos rangos de registros sin escanear todos los registros.

  • ÚNICO hace referencia a un índice donde todas las filas del índice deben ser únicas. Es decir, la misma fila puede no tener valores no NULL idénticos para todas las columnas de este índice como otra fila. Además de usarse para alcanzar rápidamente ciertos rangos de registros, los índices ÚNICOS se pueden usar para imponer restricciones en los datos, porque el sistema de base de datos no permite que se rompa la regla de valores distintos al insertar o actualizar datos.

    Su sistema de base de datos puede permitir que se aplique un índice ÚNICO a las columnas que permiten valores NULL, en cuyo caso se permite que dos filas sean idénticas si ambas contienen un valor NULL (la razón aquí es que NULL se considera no igual a sí mismo). Sin embargo, dependiendo de su aplicación, puede encuentre esto indeseable:si desea evitar esto, debe prohibir los valores NULL en las columnas relevantes.

  • PRIMARIO actúa exactamente como un índice ÚNICO, excepto que siempre se denomina 'PRIMARIO', y puede haber solo uno en una tabla (y debería sé siempre uno; aunque algunos sistemas de bases de datos no imponen esto). Un índice PRIMARIO está diseñado como un medio principal para identificar de forma única cualquier fila en la tabla, por lo que, a diferencia de ÚNICO, no debe usarse en ninguna columna que permita valores NULOS. Su índice PRIMARIO debe estar en la menor cantidad de columnas que sean suficientes para identificar de manera única una fila. A menudo, esta es solo una columna que contiene un número de incremento automático único, pero si hay algo más que pueda identificar de forma única una fila, como "código de país" en una lista de países, puede usarlo en su lugar.

    Algunos sistemas de bases de datos (como InnoDB de MySQL) almacenarán los registros de una tabla en el disco en el orden en que aparecen en el índice PRIMARIO.

  • TEXTO COMPLETO Los índices son diferentes de todos los anteriores y su comportamiento difiere significativamente entre los sistemas de bases de datos. Los índices FULLTEXT solo son útiles para búsquedas de texto completo realizadas con la cláusula MATCH() / AGAINST(), a diferencia de los tres anteriores, que generalmente se implementan internamente utilizando árboles b (permitiendo seleccionar, ordenar o rangos comenzando desde la columna más a la izquierda) o tablas hash (permitiendo la selección a partir de la columna más a la izquierda).

    Donde los otros tipos de índices son de propósito general, un índice FULLTEXT es especializado, ya que tiene un propósito limitado:solo se usa para una función de "búsqueda de texto completo".

Similitudes

  • Todos estos índices pueden tener más de una columna.

  • Con la excepción de FULLTEXT, el orden de las columnas es significativo:para que el índice sea útil en una consulta, la consulta debe usar columnas del índice comenzando desde la izquierda; no puede usar solo la segunda, tercera o cuarta parte de un índice, a menos que también esté usando las columnas anteriores en el índice para hacer coincidir valores estáticos. (Para que un índice FULLTEXT sea útil para una consulta, la consulta debe usar all columnas del índice.)