Я работаю над оптимизацией некоторых своих запросов, и у меня есть запрос, который гласит: 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.
Искренне
Местика