Ho la seguente tabella in un database MySQL:multipla Indice della rubrica vs più indici
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 ;
Lo SQL sarà il seguente:
SELECT imgURL, view FROM secondary_images
WHERE primaryId={$imgId} ORDER BY imgDate DESC
Come potete vedere ho fatto sia il primaryId
e imgDate
, tasti indice. Il mio pensiero dietro che era perché le WHERE
query clausola risultati utilizzando il primaryId
, e la clausola ORDER
utilizza imgDate
.
La mia domanda è, sarebbe meglio usare più indici come sono in questo momento? O dovrei un indice a colonne multiple (qualcosa che non capisco molto bene al momento)?
Questo è quello che ricevo da spiego:
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: Questo non sta usando una colonna multipla Index, è il risultato di usare la descrizione della tabella di cui sopra.
Puoi pubblicare la SPIEGA per la selezione? :) – Konerak
Ricorda che gli indeces non sono gratuiti. Se si hanno più oggetti, cioè su ogni inserto o aggiornamento, ogni indice deve essere aggiornato. È necessario valutare il successo prestazionale di tali aggiornamenti per il miglioramento delle prestazioni che vedrai al momento del recupero. – Marvo
Ricorda inoltre che se hai una colonna con lo stesso valore in molte righe, gli indici potrebbero peggiorare le prestazioni. – Poodlehat