Подтвердить что ты не робот

Что такое индекс базы данных?

Я слышал, как они разговаривали, так как я начал работать в технике около 18 месяцев назад. Я знаю, что они потенциально улучшают производительность, и они, по-видимому, относятся к столбцам - ( "Мы индексируем таблицу User в столбце date_of_birth" ).

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

4b9b3361

Ответ 1

Я написал полную книгу об этом! Он также доступен бесплатно в Интернете: http://use-the-index-luke.com/

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

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

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

У вас может быть много индексов в одной и той же таблице, но в разных столбцах. Таким образом, индекс на last_name, first_name отличается от индекса только на first_name (который вам нужно будет оптимизировать поиск по имени).

Индексы содержат избыточные данные (например: кластерные индексы= телефонная книга). Они имеют ту же информацию, что и в таблице (например: функциональные индексы), но отсортированы. Эта избыточность автоматически поддерживается базой данных для каждой выполняемой вами операции записи (insert/update/delete). Следовательно, индексируется производительность уменьшить.

Кроме того, чтобы быстро найти данные, индексы можно также использовать для оптимизации операций сортировки (order by) и физически упорядочить связанные данные вместе ( clustering).

Чтобы получить более полное представление, просмотрите полное содержание моей книги: http://use-the-index-luke.com/sql/table-of-contents

Ответ 2

Подумайте об этом как оглавлении для таблиц. Если он там, база данных знает, где искать более конкретно. Если его нет, база данных должна искать все данные, чтобы их найти.

Более подробное объяснение можно найти здесь, в этой статье в Википедии.

Ответ 3

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

Поиск без индекса в худшем случае O(N) сложность. Эффективный поиск с индексом позволяет логарифмически O(log(N)) или даже с некоторой сложностью архитектуры O(1).

Индекс базы данных также позволяет применять ограничения БД. Многие системы БД устанавливают индекс в наборе столбцов, называемом PRIMARY KEY. Некоторые системы БД требуют индексирования столбцов в FOREIGN KEY, чтобы ускорить операции (вставить, обновить).

Ответ 4

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

Если в куче-организованной таблице нет индексов, тогда база данных должна выполнить полное сканирование таблицы, чтобы найти значение. Например, без индекса, запрос местоположения 2700 в таблице hr.departments требует, чтобы база данных выполняла поиск по каждой строке в каждом блоке таблицы для этого значения. Этот подход не очень хорошо масштабируется по мере увеличения объемов данных.

http://docs.oracle.com/cd/E11882_01/server.112/e10713/indexiot.htm

Ответ 5

У него очень похожий поток здесь. Проверьте, это полезно.

Я знаю, что они потенциально улучшают производительность

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