Производится много выборок из большой таблицы InnoDB (HighLoad инфоблок) ~700 000 записей (251 Мб)
Такой код:
Выполняется около 3 сек. (при повторной выборке 0,0002с - очевидно, что это уже кеш)
Так вот, можно ли как-то сократить время выборки, учитывая, что в основном выборка производится именно по полям UF_CATALOG_NUMBER и UF_CAT_NUM_CLR?
Есть чувство, что установка ключей могла бы помочь ускорить выборку, но не очень в этом понимаю, поэтому прошу совета
P.S. Изменение полей выборки select на время выполнения запроса какого-то явного влияния не имеет.
Вот структура таблицы, выделил основные поля.

Такой код:
Код |
---|
$entity_data_class::getList(array( "select" => Array("*"), "order" => Array("UF_PRICE" => "ASC"), "filter" => Array( 'LOGIC' => 'OR', '=UF_CATALOG_NUMBER' => $code, '=UF_CAT_NUM_CLR' => $code ) )); // Или такой SELECT * FROM `b_repair_catalog` WHERE `UF_CATALOG_NUMBER` = '08-01750' |
Так вот, можно ли как-то сократить время выборки, учитывая, что в основном выборка производится именно по полям UF_CATALOG_NUMBER и UF_CAT_NUM_CLR?
Есть чувство, что установка ключей могла бы помочь ускорить выборку, но не очень в этом понимаю, поэтому прошу совета

P.S. Изменение полей выборки select на время выполнения запроса какого-то явного влияния не имеет.
Вот структура таблицы, выделил основные поля.
postoev.ru/blog/