@warchant
Пишу всё на всём

Как MySQL производит поиск по отсортированным данным внутри файла БД?

Есть таблица c 1 млн записями:
CREATE TABLE `affiliation` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(512) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=291323 DEFAULT CHARSET=latin1;


После выгрузки дампа, я заметил, что данные отсортированы по name, вместо того, чтобы быть отсортированными по id. По логике все правильно, ибо name unique и нужно перед вставкой проверить, есть ли такой name. Для этого нужно найти такой name.
С поиском по id все ясно, там строится b+-tree (или b-tree), в котором ключи отсортированы и поиск логарифмический от высоты дерева. НО, как проводится поиск по отсортированным именам? Неужто еще один индекс строится?
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
opium
@opium
Просто люблю качественно работать
Ну вы создали сами уникальный индекс по этому полю, чему тут удивляться?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы