Задать вопрос
@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), в котором ключи отсортированы и поиск логарифмический от высоты дерева. НО, как проводится поиск по отсортированным именам? Неужто еще один индекс строится?
  • Вопрос задан
  • 106 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Java-разработчик
    8 месяцев
    Далее
  • Shultais Education
    Основы SQL
    3 месяца
    Далее
  • OTUS
    PHP Developer. Professional
    5 месяцев
    Далее
Решения вопроса 1
opium
@opium
Просто люблю качественно работать
Ну вы создали сами уникальный индекс по этому полю, чему тут удивляться?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы