1 / 22

Индексы

Индексы. Что такое индекс ?. Объект базы данных. Используется сервером Oracle для ускорения выборки строк с помощью указателя. Уменьшает количество операций ввода-вывода за счет использования быстрого метода поиска данных. Независим от таблицы, для которой был создан.

Download Presentation

Индексы

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Индексы

  2. Что такое индекс ? • Объект базы данных. • Используется сервером Oracle для ускорения выборки строк с помощью указателя. • Уменьшает количество операций ввода-вывода за счет использования быстрого метода поиска данных. • Независим от таблицы, для которой был создан. • Автоматически используется и поддерживается сервером Oracle.

  3. Как создаются индексы? Автоматически • Индекс уникальных ключей создается автоматически, если в определении таблицы задано ограничение PRIMARY KEY или UNIQUE. Вручную • Пользователь может создавать неуникальные индексы по столбцам в целях ускорения доступа к строкам.

  4. Для чего используются индексы • Сервер Oracle использует индексы для ускорения доступа к строкам в таблице. • Сервер использует один из следующих методов оптимизации: • оптимизация на основе правил • оптимизация по стоимости выполнения запроса. • Взаимодействие с пользователем не требуется.

  5. Структура индекса • Сервер Oracle использует для индексов структуру сбалансированного B-дерева. • Каждый индекс состоит из различных столбцов и указателей (ROWID), организованных в виде страниц (ветвей). • Сервер осуществляет поиск по ветвям дерева до обнаружения листа со значениями, содержащим указатель.

  6. B-дерево • Использование B-деревьев впервые было предложено Р. Бэйером (англ.R. Bayer) и Е. МакКрейтом (англ.E. McCreight) в 1970 году. • Сбалансированность означает, что длина любых двух путей от корня до листов различается не более, чем на единицу.

  7. Структура индекса в видеВ-дерева

  8. Временная сложностьв О-символике

  9. Типы индексов • Уникальный - обеспечивает уникальность значений в столбце • Неуникальный - ускоряет запросы • Одностолбцовый - в индексе использован только один столбец • Составной или сложный - в индексе использовано несколько столбцов

  10. Создание индекса: синтаксис • Создание индекса по одному или нескольким столбцам. Пример • Ускорение доступа к столбцу LAST_NAME в таблице S_EMP.

  11. Когда создавать индекс • Столбец часто используется в предложении WHERE или условии соединения. • Столбец имеет широкий диапазон значений. • Столбец содержит большое количество неопределенных значений. • Два или более столбцов часто используются вместе в предложении WHERE или условии соединения. • Таблица большого размера, и предполагается, что большинство запросов будет выбирать менее 10-15% строк. • Увеличение количества индексов не всегда ускоряет запросы

  12. Когда не создавать индекс • Таблица небольшого размера. • Столбцы не очень часто используются как условие в запросе • Большая часть запросов будет выбирать более, чем 10-15% строк. • Таблица часто обновляется

  13. Просмотр индексов • Определение индекса содержится в представлении словаря данных USER_INDEXES. • Представление USER_IND_COLUMNS содержит имя индекса, имя таблицы и имя столбца.

  14. Последовательность столбцов в составном индексе • Последовательность, в которой столбцы представлены в составном индексе, достаточно важна. Дело в том, что получить набор данных по запросу, затрагивающему только первый из проиндексированных столбцов, можно. Однако в большинстве СУБД невозможно или неэффективно получение данных только по второму и далее проиндексированным столбцам (без ограничений на первый столбец). • Например, представим себе телефонный справочник, отсортированный вначале по городу, затем по фамилии, и затем по имени. Если вы знаете город, вы можете легко найти все телефоны этого города. Однако в таком справочнике будет весьма трудоёмко найти все телефоны, записанные на определённую фамилию — для этого необходимо посмотреть в секцию каждого города и поискать там нужную фамилию. Некоторые СУБД выполняют эту работу, остальные же просто не используют такой индекс.

  15. Производительность • Для оптимальной производительности запросов индексы обычно создаются на тех столбцах таблицы, которые часто используются в запросах. Для одной таблицы может быть создано несколько индексов. Однако увеличение числа индексов замедляет операции добавления, обновления, удаления строк таблицы, поскольку при этом приходится обновлять сами индексы. Кроме того, индексы занимают дополнительный объем памяти, поэтому перед созданием индекса следует убедиться, что планируемый выигрыш в производительности запросов превысит дополнительную затрату ресурсов компьютера на сопровождение индекса.

  16. Пространственные индексы (Квадродерево, Spatial grid, Quadtree, R-Tree)

  17. HASH • Hash-индексы были предложены Артуром Фуллером, и предполагают хранение не самих значений, а их хэшей, благодаря чему уменьшается размер(а, соответственно, и увеличивается скорость их обработки) индексов из больших полей. Таким образом, при запросах с использованием HASH-индексов, сравниваться будут не искомое со значения поля, а хэш от искомого значения с хэшамиполей.

  18. Inverted index Инвертированный индекс – это полнотекстовый индекс, хранящий для каждого лексемы ключей отсортированный список адресов записей таблицы, которые содержат данный ключ.В упрощенном виде это будет выглядеть так:

  19. Bitmap • Bitmapindex – метод битовых индексов заключается в создании отдельных битовых карт (последовательность 0 и 1) для каждого возможного значения столбца, где каждому биту соответствует строка с индексируемым значением, а его значение равное 1 означает, что запись, соответствующая позиции бита содержит индексируемое значение для данного столбца или свойства. Битовые карты • Битовые карты

  20. Reverse index • Reverse index – это тоже B-tree индекс но с реверсированным ключом, используемый в основном для монотонно возрастающих значений.

  21. Удаление индекса • Удаление индекса из базы данных. • Чтобы удалить индекс, необходимо быть его владельцем или иметь привилегию DROP ANY INDEX.

  22. Заключение • Индексы – это объекты базы данных, предназначенные для ускорения выполнения запросов. • Поиск указателя на строку таблицы осуществляется методом В-дерева. • Некоторые индексы уникальных ключей создаются автоматически. • Пользователи могут создавать индексы с помощью команды CREATE INDEX • Определение индекса находиться в словаре данных USER_INDEXES.

More Related