Я новичок в базах данных и читаю, что добавление индекса в поле, которое нужно искать, может значительно ускорить поиск. Я понимаю эту реальность, но мне любопытно, как она на самом деле работает. Я немного искал эту тему, но не нашел ничего хорошего, лаконичного, а не технического ответа на то, как это работает.Почему добавление индекса в поле базы данных ускоряет поиск по этому полю?
Я читал аналогию с тем, что он как индекс в конце книги, но в случае поля данных уникальных элементов (таких как адреса электронной почты в пользовательской базе данных), используя обратную аналогии книги обеспечит такое же линейное время поиска, как и неиндексированное знакомство.
Что здесь происходит, чтобы ускорить поиск времени? Я немного читал о поиске с использованием B+-Trees, но описания были слишком сложными. То, что я ищу, - это обзор на высоком уровне того, что происходит, что-то, что помогает моему концептуальному пониманию этого, а не технические детали.
Это все еще не дает достаточного ответа. В таблице все хранится как поля (столбцы), поэтому мы можем рассматривать поле данных как главу в книге. Поэтому, если мы идем по электронной почте в главе книги, все равно так же быстро искать там электронную почту, как в индексе книги. Мы не просматриваем всю таблицу для элемента, который хотим найти ... только соответствующее поле. –
Итак, вы предлагаете хранить * ВСЕ * данные снова для каждой строки в каждой главе? Таким образом, у вас есть глава «фамилия», отсортированная по фамилии, с указанием имени, фамилии, DOB, места рождения, имени пользователя, электронной почты и биографии на 1000 слов. Затем у вас есть раздел «имя пользователя», отсортированный по имени пользователя, снова содержащий имя, фамилию, ДОБ, родину, имя пользователя, электронную почту и биографию на 1000 слов. Затем у вас есть «электронная почта», отсортированная по электронной почте, с указанием имени, фамилии, DOB, места рождения, имени пользователя, электронной почты и биографии на 1000 слов. Это кажется очень неэффективным использованием пространства ... –
Хорошо, подумайте об этом так. У нас есть книга, состоящая только из уникальных адресов электронной почты (без повторов). Вот и нет, другого содержания. В этой книге, если бы у нас был указатель, это была бы точная копия содержимого книги, только что-то отсортированная (хотя и зависит от того, кто делает индекс). Итак, этот случай, поиск адреса электронной почты в книге или индекса эквивалентен. Вот почему я говорю, что аналог книжного индекса терпит неудачу. Очевидно, это больше, чем это, поскольку поиск в индексированной базе данных будет искать электронную почту намного быстрее, чем полносканирование. –