В базе данных MySQL у меня есть следующая таблица:
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 ;
SQL будет следующим:
SELECT imgURL, view FROM secondary_images
WHERE primaryId={$imgId} ORDER BY imgDate DESC
Как видите, я сделал как primaryId
, так и imgDate
, Index Keys. Я думал об этом потому, что в результате запроса пункта ГДЕ
используется primaryId
, а в пункте ORDER
используется imgDate
.
Мой вопрос в том, не лучше ли использовать множественные индексы так, как я сейчас? Или мне следует использовать многоколоночный индекс (что-то, что я сейчас не очень хорошо понимаю)?
Это то, что я получаю от EXPLAIN:
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
NOTE: Это не использование многоколоночного индекса, это результат использования описания вышеприведенной таблицы.