MySQL Innodb: большой композитный ПК нет других индексов

Я создаю таблицу Innodb с четырьмя столбцами.

Таблица

 column_a (tiny_int)
 column_b (medium_int)
 column_c (timestamp)
 column_d (medium_int)

 Primary Key -> column_a, column_b, column_c

С логической точки зрения столбцы A, B, C должны быть объединены в PK. Однако для повышения производительности и возможности чтения непосредственно из индекса (с использованием индекса) я рассматриваю PK, который состоит из всех 4 столбцов (A, B, C, D).

ВОПРОС

Какова будет эффективность добавления дополнительного столбца к первичному ключу в таблице Innodb?

ОТХОДОВ

  • Суррогатные первичные ключи абсолютно исключены
  • Других индексов в этой таблице не будет
  • Таблица интенсивно читает / пишет (оба примерно одинаковы)

Спасибо!

2 ответа

В InnoDB, PRIMARY KEY Структура индекса включает в себя все неключевые поля и автоматически использует их для покрытия запросов индекса и исключения строк. Не существует отдельной структуры данных, кроме PRIMARY KEY структура индекса. Нет необходимости добавлять дополнительные поля в PRIMARY KEY само определение. Обратите внимание, что это не покажет Using index когда он использует PRIMARY KEY в таблице InnoDB, потому что это другой путь кода, который не вызывает добавление этого сообщения.

Несколько вещей для рассмотрения:

  1. Если в рассматриваемом запросе не используются все столбцы индекса, индекс не будет использоваться.
  2. Как отмечает jeremycole: в структуре Innodb все данные строк хранятся в листовых узлах B-дерева кластерного индекса (ПЕРВИЧНЫЙ ИНДЕКС)

Эта концепция рассматривается: http://www.innodb.com/wp/wp-content/uploads/2009/05/innodb-file-formats-and-source-code-structure.pdf http: //blog.johnjosephbachir. орг /2006/10/22/ все вы-потребность к ноу-о-проектирование-MySQL-InnoDB-первичные клавиши /

... и в блоге Джереми здесь: http://blog.jcole.us/2013/01/07/the-physical-structure-of-innodb-index-pages/

Таким образом, запроса на A, B, C будет достаточно для эффективного получения всех значений в этой таблице Innodb.

Другие вопросы по тегам