Что такое индексы в контексте базы данных? - PullRequest
6 голосов
/ 31 октября 2010

Некоторое время назад я читал в Интернете, что использование индексов действительно ускоряет ваши запросы к базе данных.

Мой вопрос: что такое индексы?Почему они ускоряют запросы?

Ответы [ 4 ]

5 голосов
/ 31 октября 2010

Проще говоря, это обеспечивает эффективный поиск данных.

Принимая телефонную книгу, это всегда "фамилия, имя", чтобы вы могли найти кого-нибудь. Представьте, что телефонная компания просто добавила новые номера в конец списка без какого-либо заказа: вам нужно будет сканировать миллионы записей одну за другой, чтобы найти «Смит, Джон».

То же самое относится и к таблице базы данных. Таблица без индекса (просто) называется «кучей»: потому что ваши данные - это буквально куча неупорядоченных данных. Если у меня миллион строк, мне нужно просмотреть каждую строку, чтобы найти то, что я хочу.

Конечно, это сложнее, но я надеюсь, что это отражает суть.

То же самое применимо везде: названия улиц в путеводителе A-Z всегда в алфавитном порядке, записи в выписке по счету всегда в порядке дат

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

Вы когда-нибудь искали содержание книги, используя ее индекс?Обычно вы видите страницу индекса, чтобы увидеть нужную вам главу, на которой она находится, а затем переходите прямо к этой странице, вместо того, чтобы искать по всем страницам.

Это очень похоже на работу индексов в таблице -в зависимости от того, по какому столбцу (столбцам) фильтруется запрос, сканируется индекс этого столбца (столбцов), в котором указывается расположение соответствующих строк в фактической физической памяти.Это намного быстрее, чем искать все строки по отдельности.Также индексы обычно упорядочены (тогда как фактические строки могут не быть), что позволяет применять лучшие алгоритмы поиска, такие как двоичное сканирование поиска.

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

Индексы - это сложная вещь, некоторые пункты:

  • Индексы, как и в книге, создают указатель на данные.
  • Требуется обслуживание индекса, они фрагментируются повремя.
  • накладные расходы на операторы CREATE и UPDATE, так как индекс должен обновляться при изменении данных
  • В основном используется для ускорения поиска данных

Естьразличные типы индексов, и очень специфичны для каждой реализации.По сути, нет точной науки о создании индексов, и они имеют решающее значение для приложения.

IMO, одна из лучших статей по индексу для начинающих, фактически набор статей.Требуется учетная запись, но бесплатный и отличный информационный ресурс по SQL.

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

Индекс - это копия (часть) таблицы, которая становится меньше для хранения в памяти, чем вся таблица, что ускоряет операции чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...