Rails 2.3.5 / вопрос предпочтения ключей MySQL;индекс силы - PullRequest
2 голосов
/ 11 февраля 2011

Привет,

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

create table data (
   user_id int ...
   created_on datetime ...
   ...
   key (user_id),
   key (created_on)
   ...
) engine = InnoDB;

Итак, по запросу ... SELECT * FROM data WHERE user_id = X и creation_on = Y

Оптимизатор запросов предпочитает create_on, а не user_id, теперь я могу использовать FORCE INDEX, чтобы «форсировать» проблему, но я не хочу делать это для каждого Data.find и любого другого нашего запроса (сотни изменений).

Могу ли я повлиять на Rails 2.3.5, чтобы использовать глобально «data FORCE INDEX (user_id_index)», когда это возможно (и никаких других противоречий; т. Е. Другой индекс FORCE, введенный вручную)

или

Могу ли я изменить то, как оптимизатор запросов mysql предпочитает индексы в более ручном режиме? Я посмотрел на анализ данных таблицы; но план запроса не меняется.

-daniel

1 Ответ

1 голос
/ 11 февраля 2011

Создайте составной индекс user_id + created_on вместо user_id, и все будет хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...