Как InnoDB сортирует многостолбцовые первичные ключи - PullRequest
5 голосов
/ 12 июня 2011

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

Но проблема в том, что у меня есть такая таблица с двумя столбцами id и hash (и некоторые другие, но не важные);

id int auto increment
hash Guid

Мне нужно разбить эту таблицу на столбец хеша, это означает, что я должен поместить ее в первичный ключ.

Так что я думаю о создании первичного ключа как (id, hash). Столбец id будет использоваться в соединениях с другими таблицами.

Проблема в том, что если у меня есть PK как (id, hash), как InnoDB будет его сортировать?

Будет ли он сначала использовать столбец id, а затем хэш, или он будет использовать другой способ определения порядка ключей? Первый будет лучше, так как он использует преимущества уже отсортированного столбца auto inc, но я не смог найти никакой информации о том, как будет выполняться сортировка в составных столбцах.

Любое понимание этого очень ценится:)

1 Ответ

1 голос
/ 12 июля 2011

Первичный ключ на нескольких столбцах управляется MySQL как объединение значений выбранных столбцов. Таким образом, первый столбец можно отсортировать быстрее, так как он будет в начале агрегата.

...