У меня следующая структура таблицы
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;
Как вы заметили, у меня есть дубликаты индексов user_id: date_expired
& user_id
. Мне, конечно, нужен уникальный индекс, потому что я хочу убедиться, что данные уникальны.
Причина дублирования индексов заключается в том, что без индекса user_id
мой основной поисковый запрос занимает 4 секунды. С дополнительным индексом это занимает 1 секунду. Запрос присоединяется к таблице на user_id
и проверяет date_expired
.
В таблице всего 275 записей.
- Насколько плохо иметь уникальный и нормальный индекс в одном поле?
- Насколько плохо иметь индексы большего размера, чем данные, когда таблица является чисто идентификаторами?