2010-10-31 2 views
6

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

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

+1

http://en.wikipedia.org/wiki/Index_(database) - довольно полная информация – Kel

+0

Мой взгляд на индексы или индексы заключается в том, что они используются для быстрого поиска данных в базе данных и позволяют упорядочивать данные. –

ответ

5

Проще говоря, это позволяет эффективно находить данные.

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

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

Конечно, это более сложно, но я надеюсь, что это захватывает суть.

То же самое относится и в любом месте: названия улиц в руководстве AZ всегда в алфавитном порядке, данные о банковской выписке всегда в хронологическом порядке

+0

Итак, это означает, что если я добавлю индекс в столбец «Имя» в таблице «Лицо», это означает, что записи в этой таблице будут упорядочены столбцом «Имя»? Что произойдет, если в двух столбцах в одной таблице есть индексы? – 2010-10-31 17:35:39

+0

@Sergio Tapia: каждый индекс логически упорядочен, чтобы позволить находить значения. Таким образом, у вас есть несколько индексов: каждый из них логически упорядочен отдельно от ваших фактических данных. Это игнорирует кластерные и некластеризованные индексы, которые являются физическими реализациями. Достаточно рассмотреть каждый индекс, логически упорядоченный для простоты. Например, таблица не является печатной телефонной книгой, это структура на диске, которая на самом деле не читается человеком ... следовательно, «логический» бит, который я упомянул – gbn

1

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

1

Индексы представляют собой сложную вещь, некоторые пункты маркированного:

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

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

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

1

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

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

Смежные вопросы