Есть таблица 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), в котором ключи отсортированы и поиск логарифмический от высоты дерева. НО, как проводится поиск по отсортированным именам? Неужто еще один индекс строится?