Чтобы понять какие индексы нам может потребоваться создать, необходимо:
- Получить список всех запросов, в том числе количество запусков и время исполнения каждого запроса.
- Перемножить количество запусков на время исполнения и посмотреть на топ ресурсоёмких запросов. Их нам и надо оптимизировать.
Например, для Битрикса дали хороший прирост индексы для фасетных индексов и для элементов инфоблоков:
ALTER TABLE `b_iblock_17_index` ADD INDEX `b_iblock_17_index_idx_facet_id_value` (`FACET_ID`,`VALUE`); ALTER TABLE `b_iblock_17_index` ADD INDEX `b_iblock_17_index_idx_sectio_facet_value_elemen_value` (`SECTION_ID`,`FACET_ID`,`VALUE_NUM`,`ELEMENT_ID`,`VALUE`); ALTER TABLE `b_iblock_element` ADD INDEX `b_iblock_element_idx_active_active_iblock_wf_id_wf_id` (`ACTIVE_TO`,`ACTIVE_FROM`,`IBLOCK_ID`,`WF_STATUS_ID`,`WF_PARENT_ELEMENT_ID`);
Для модуля SEO умный фильтр от Сотбита эти 2 индекса:
ALTER TABLE `b_sotbit_seometa_chpu` ADD INDEX `b_sotbit_seometa_c_idx_new_url_id` (`NEW_URL`(255),`ID`); ALTER TABLE `b_sotbit_seometa_chpu` ADD INDEX `b_sotbit_seometa_c_idx_real_url_id` (`REAL_URL`(255),`ID`);
Сильно может помочь в создании необходимых индексов сервис EverSQL. Бесплатно только одна оптимизация в месяц, остальное по тарифам сервиса.