que tienen la siguiente estructura de la tabla¿Qué tan malo es tener un índice único y normal en la misma columna?
CREATE TABLE `table` (
`id` int(11) NOT NULL auto_increment,
`date_expired` datetime NOT NULL,
`user_id` int(11) NOT NULL,
`foreign_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `date_expired` (`date_expired`,`user_id`,`foreign_id`),
KEY `user_id` (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Como se dará cuenta, no tengo índices duplicados en user_id: date_expired
& user_id
. Por supuesto, quiero el índice único porque quiero asegurarme de que los datos sean únicos.
El motivo de los índices duplicados es que sin el índice user_id
, mi consulta de búsqueda principal tarda 4 segundos. Con el índice extra, demora 1 segundo. La consulta se está uniendo a la tabla en user_id
y marcando date_expired
.
La tabla solo tiene 275 registros.
- ¿Qué tan malo es tener un índice único y normal en el mismo campo?
- ¿Qué tan malo es tener índices más grandes que los datos cuando la tabla es puramente ids?
¡Excelente, no lo sabía! Y eso es todo lo que necesitaba hacer. –
Tengo la clave principal porque el sistema básico de administración de bases de datos de usuario que uso requiere que tenga una clave principal. Tienes razón, realmente no lo necesito, pero me hace la vida más fácil y dudo que tenga mucho efecto en la velocidad. –
Genial, PostgreSQL también hace algo similar http://www.postgresql.org/docs/8.2/static/indexes-multicolumn.html Digo esto porque alguien podría estar preguntándose como si fuera un lugar común :-) –