2010-06-27 19 views
6

Aunque entiendo que es muy conveniente tener un índice en una columna única: para verificar de forma fácil y eficiente la colisión de valores, creo que corresponde al programador especificar si una columna de campo única debe tener un índice o no, con respecto a la optimización del tamaño frente a la velocidad.MySQL: ¿Un campo de columna 'único' implica un índice, y si es así, por qué?

Por lo que yo sé, MySQL indexa automáticamente una columna de tabla que se especifica como única. ¿Es tan?

¿Hay alguna razón por la cual MySQL aparentemente no puede tener columnas únicas SIN índices? Sí, cada inserción/actualización de valor será O (number_of_rows) operación sin una, pero como he dicho, ¿no debería el programador ser gravado con la decisión?

¡Solo curiosidad!

Respuesta

11

Por lo que yo sé, MySQL indexa automáticamente una columna de la tabla que se especifica como única. ¿Es tan?

Sí. Sin embargo, no es necesariamente "automático", está implícito. UNIQUE es tipo del índice, por lo tanto, por supuesto, esa columna está indexada.

¿Hay alguna razón por la cual MySQL aparentemente no puede tener columnas únicas SIN índices?

Porque sería tonto para MySQL para hacer un escaneo completo de tabla en cada INSERT/UPDATE de mantener la restricción única.

Editar:

Sí, todos los valores de inserción/actualización será O (NUMBER_OF_ROWS) la operación sin uno, pero como he dicho, no debe ser gravado el programador con la decisión?

¿Por qué un programador desea aplicar manualmente integridad de los datos básicos exterior de la capa de almacenamiento de datos? Entiendo a dónde va con esto, pero el hecho es que un índice no puede lastimar nada (solo toma un poco más de espacio), así que realmente no hay una decisión que considerar.

+1

De hecho, una de las razones para usar un DBMS es mantener la integridad de los datos. –

+0

La integridad de datos y la indexación de datos, aunque relacionados, son dos conceptos ortogonales, ¿no? – amn

+1

@amn, sí, creo que lo son. Y la mayoría de las veces, la solución a la integridad de los datos no es tan elegante como este caso particular. Muchas veces se trata de tener que verificar físicamente que la información que se supone que está allí está realmente allí. Por supuesto, esto también depende del RDMS, soporte para claves externas, restricciones clave, etc. –

Cuestiones relacionadas