Индексный вопрос: выберите * с предложением WHERE. Где и как создать индекс

Я работаю над оптимизацией некоторых своих запросов, и у меня есть запрос, который гласит: select * from SC where c_id ="+c_id" Схема **SC** выглядит так:

SC (  c_id int not null,  date_start date not null, date_stop date not null, r_t_id int not null,  nt int,  t_p decimal,   PRIMARY KEY (c_id, r_t_id, date_start, date_stop));

Моя немедленная заявка на то, как должен быть создан индекс, — это покрывающий индекс в следующем порядке:

INDEX(c_id, date_start, date_stop, nt, r_t_id, t_p)

Причина этого заказа, на которой я основываюсь:

Предложение WHERE выбирает из c_id, что делает его первым порядком сортировки. Затем, date_start и date_stop, чтобы указать тип «диапазона», который будет определен в этих параметрах. Далее, nt, потому что он выберет nt. Далее r_t_id, потому что это идентификатор для определенного типа моего r_t таблица И последняя t_p, потому что это просто информация.

Я не знаю, нужно ли вообще упорядочивать его определенным образом, когда это оператор SELECT ALL. Надо сказать, что SC не самая большая таблица. Я могу сказать, сколько строк он содержит, но оценка может быть от ‹10 до 1000.

Следующее, что нужно добавить, это то, что SC в разных запросах вставляет данные в SC, и я знаю, что индексы для таблиц, в которых есть вставки, могут быть неэффективными с точки зрения затрат. , но могу ли я как-то создать золотую середину для эффективного выполнения этой работы.

Не знаю, отличается ли это, но я использую базу данных IBM DB2 версии 9.7.

Искренне

Местика


person Emil Devantie Brockdorff    schedule 17.05.2010    source источник


Ответы (1)


Поскольку вы говорите максимум о 1000 строк, не слишком беспокойтесь об индексе, за исключением случаев, когда у вас есть проблемы в производстве. Я никогда не видел, чтобы таблица из 1000 строк была проблемой. Кстати, вы настроили C_ID в качестве первичного ключа. Поэтому вам не нужен дополнительный индекс, поскольку таблица уже отсортирована с использованием первичного ключа.

person Peter Schuetze    schedule 27.05.2010