У меня есть следующая таблица в базе данных 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. Я думал об этом потому, что предложение WHERE
запрашивает результаты с использованием 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
ПРИМЕЧАНИЕ.. Это не использование индекса нескольких столбцов, это результат использования приведенного выше описания таблицы.