una soporta segundo rapida por optimizar mas lentas lenta hacer cuello cuantas consultas consulta como botella agilizar mysql sql database unique-key

soporta - optimizar consultas mysql explain



Hacer columna de texto como clave Ășnica (2)

Quiero hacer una tabla en el servidor MySQL con columna de texto medio como UNIQUE KEY

CREATE TABLE `parts` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` mediumtext NOT NULL, `display_status` int(11) NOT NULL, UNIQUE KEY `name` (`name`), PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

pero esto hizo un error

BLOB/TEXT column ''name'' used in key specification without a key length

cuando cambio el tipo de `nombre` a varchar ... funciona!

¿Puedes decir si puedo hacer una columna de texto como UNIQUE KEY


Básicamente no se puede usar la columna de Text como clave UNIQUE . Porque prácticamente una columna tan grande no será única y podría haber más posibilidades de duplicados. Así que vaya para el método hashing y use esa salida como una restricción ÚNICA.

Espero que esto te ayude


El límite de 255 para la longitud varchar ya no se aplica. De la documentation :

Los valores en las columnas VARCHAR son cadenas de longitud variable. La longitud se puede especificar como un valor de 0 a 255 antes de MySQL 5.0.3 y de 0 a 65,535 en 5.0.3 y versiones posteriores.

Los índices únicos deben tener una longitud máxima conocida (un requisito de mysql debido a su implementación interna), así que use varchar con un valor lo suficientemente grande como para ajustarse a su valor esperado más largo, por ejemplo

... `name` varchar(65535) NOT NULL, -- for example ...