tengo la siguiente tabla en una base de datos MySQL:Columna Múltiple Índice vs Índices múltiples
CREATE TABLE `secondary_images` (
`imgId` int(10) unsigned NOT NULL AUTO_INCREMENT,
`primaryId` int(10) unsigned DEFAULT NULL,
`view` varchar(255) DEFAULT NULL,
`imgURL` varchar(255) DEFAULT NULL,
`imgDate` datetime DEFAULT NULL,
PRIMARY KEY (`imgId`),
KEY `primaryId` (`primaryId`),
KEY `imgDate` (`imgDate`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
El SQL será el siguiente:
SELECT imgURL, view FROM secondary_images
WHERE primaryId={$imgId} ORDER BY imgDate DESC
Como se puede ver que hice tanto el primaryId
y imgDate
, claves de índice. Mi pensamiento detrás de eso fue porque la cláusula WHERE
consulta los resultados usando el primaryId
, y la cláusula ORDER
usa imgDate
.
Mi pregunta es, ¿sería mejor usar Índices múltiples como lo estoy ahora? ¿O debería un índice de columna múltiple (algo que no entiendo muy bien en este momento)?
Esto es lo que recibo de explicar:
id = 1
select_type = simple
table = secondary_images
type = ref
possible_keys = primaryId
key = primaryId
key_len = 5
ref = const
rows = 1
extra = Using where; Using filesort
NOTA: Esto no está utilizando una columna múltiple Índice, es el resultado del uso de la descripción de la tabla anterior.
¿Puedes publicar el EXPLAIN para la selección? :) – Konerak
Tenga en cuenta que los índices no son gratuitos. Si tiene varios indeces, eso significa que en cada inserción o actualización, cada índice debe actualizarse. Debe sopesar el rendimiento alcanzado por esas actualizaciones para la mejora del rendimiento que verá en la recuperación. – Marvo
Recuerde también que si tiene una columna que tiene el mismo valor en muchas filas, los índices podrían empeorar el rendimiento. – Poodlehat