MySQL: объединить производительность при использовании всех против некоторых столбцов PK - PullRequest
0 голосов
/ 02 ноября 2011

Мы заметили, что при объединении таблицы с многоколоночным PK к себе:

  1. объединение с использованием всех столбцов PK выполнялось в .5s
  2. объединение с использованием всех столбцов PK, кроме одного, выполнялось за 42-44 с

Другая, может быть посторонняя информация:

  • все столбцы PK имелиbtree indexes
  • столбец, который мы оставили во втором случае, был BOOLEAN (на самом деле tinyint(1)) - поэтому набор результатов был в два раза больше, чем в первом случае
  • thisнаблюдалось как для inner join, так и для left join
  • в соединениях не использовались столбцы не-PK
  • многократный запуск запроса не привел к значительному сокращению времени выполнения (возможно, на 2 с)

Почему разница во времени исполнения была такой большой?

1 Ответ

1 голос
/ 02 ноября 2011

Существует уникальный индекс, помещенный в (набор) столбцов PK. Просмотрите план объяснения для проверки, но вполне вероятно, что индекс используется только при объединении всех столбцов PK.

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