Почему бы не использовать индекс при выполнении того же запроса в другой базе данных? - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть две базы данных. одна база данных prod (mysql) другая база данных разработки (mysql)

когда я использую ключ объяснения, при разработке базы данных используется индекс, но база данных prod не работает.

тот же запрос та же база данных (база данных разработки является копией продукта) тот же индекс .....

так что я проверил индекс, 'показать индекс' ...

но тот же индекс.

объяснение результата разработки базы данных enter image description here

объяснение результата базы данных prod enter image description here

Я ожидаю, что таблица 'p' будет использовать индекс 'idx_payment_tb'

1 Ответ

0 голосов
/ 30 апреля 2019

Когда Оптимизатор решает не использовать индекс, это часто имеет вескую причину, а именно то, что распределение данных таково, что использование индекса будет на самом деле медленнее.

Пожалуйста, укажите SHOW CREATE TABLE и EXPLAIN SELECT как текст, а не изображения. Существует много причин, по которым оптимизатор может избегать индекса; мы, вероятно, можем сказать вам, какая причина была использована в этот раз.

  • Если это крошечная таблица, зачем беспокоиться об индексе.
  • Если используемый ключ встречается в таблице «много» (что может отличаться для вашего dev и prod), отскок назад и вперед между индексом и данными, вероятно, будет медленнее.
  • Статистика может отличаться для двух машин.
...