2015-10-15 2 views
0

Это довольно простой вопрос, но я смущен тем, что я читаю в разных местах. У меня есть простая таблица, которая не содержит огромное количество данных (менее 500 строк для любого данного дб характерна) Типичный запрос к этой таблице выглядит следующим образом:Должен ли я использовать несколько индексов с одним столбцом или один индекс с несколькими столбцами?

select system_fields.name from system_fields where system_fields.form_id=? and system_fields.field_id=? 

Мой вопрос, я должен иметь отдельный индекс для form_id и один для field_id, или я должен создать индекс для комбинации этих двух полей? Раньше я никогда ничего не делал с индексами с несколькими столбцами.

CREATE TABLE IF NOT EXISTS `system_fields` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `field_id` int(11) NOT NULL, 
    `form_id` int(11) NOT NULL, 
    `name` varchar(50) NOT NULL, 
    `reference_field_id` varchar(1000) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    KEY `field_id` (`field_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=293 ; 

ответ

1

Если вы всегда будете запрашивать эти два поля, добавьте индекс с несколькими столбцами.

Я также укажу, что если у вас будет < 500 строк в таблице, ваш индекс может даже не привыкнуть. Любая разница в производительности с индексом на 500 строк или без него будет незначительной.

Вот немного больше (хорошо) чтение: https://www.percona.com/blog/2014/01/03/multiple-column-index-vs-multiple-indexes-with-mysql-56/

+0

Эта связь в основном не имеет значения, так как одна из колонн испытывается против «диапазона». –