В InnoDB столбцы, которые не являются частью индекса, также хранятся в отсортированном порядке? - PullRequest
0 голосов
/ 22 августа 2010

Я использую InnoDB. Моя селективность индекса (кардинальность / общее количество строк) составляет <100%, примерно 96-98%. </p>

  • Я хотел бы знать, если столбцы, которые не являются частью ключей, также хранятся в отсортированном порядке. Это влияет на дизайн моих столов.

  • Также было бы интересно узнать, какое снижение производительности при поиске я могу ожидать, когда селективность индекса <100%. </p>

(я получаю эти вопросы, поскольку для InnoDB упоминается только, что индексы кластеризованы, и после индекса хранится TID / RP)

1 Ответ

1 голос
/ 24 октября 2010

Нет, порядок столбцов без ключа не имеет значения.

Ответ на ваш второй вопрос более сложный - я собираюсь пройтись по нему, так как думаю, что вы, возможно, немного неправильно поняли InnoDB -

Существует два типа индексов: первичный и вторичный.

Индекс первичного ключа кластеризован, то есть данные хранятся в листьях дерева B +. Поиск по первичному ключу - это всего лишь один обход дерева, и у вас есть строки, которые вы ищете.

Поиск по вторичному ключу требует поиска по вторичному ключу, поиска соответствующих строк первичного ключа, а затем просмотра первичного ключа для получения данных.

Вам нужно беспокоиться только о селективности вторичных (некластеризованных) индексов, поскольку первичный (кластеризованный) индекс всегда будет иметь селективность 1. Степень избирательности вторичного индекса сильно варьируется - для одного; это зависит от ширины индекса и ширины строки. Это также зависит от того, достаточно ли у вас памяти, так как если вторичные ключи не «следуют» за первичным ключом, это может привести к тому, что случайный ввод-вывод будет искать каждую строку из кластеризованного индекса.

...