[МУЗЫКА] [МУЗЫКА] Мы с вами рассмотрели, какие бывают запросы к данным, и договорились, что нам понадобятся некоторые дополнительные структуры, которые позволят нам производить поиск наиболее эффективным способом. Такие структуры называются индексами. В общем и целом, можно дать определение индексу, назвав его избыточной структурой, которая служит для ускорения поиска. Почему мы называем индекс избыточной структурой? Потому что никакой новой содержательной информации в данные он не добавляет. Он лишь помогает нам найти нужные данные быстрее. Назначение индексов: это ускорение доступа к данным; это автоматическое упорядочивание записей при выборке; и также с помощью индексов мы можем добиться поддержки уникальности данных. Для каких видов поиска могут помочь индексы? Они могут помочь при поиске на точное значение атрибута; на интервальное значение атрибута и на значение нескольких атрибутов, которые мы определяем при поиске. Какими способами мы может создать индексы? Индексы создаются автоматически, когда мы определяем свойства некоторых столбцов таблицы, или мы можем создавать индексы специальной командой. Рассмотрим первый случай: Если мы при определении таблицы называли поле или комбинацию полей первичным ключом, то тем самым мы автоматически создавали индекс по этому первичному ключу. Также индексы создаются автоматически, если мы делаем поле или комбинацию полей уникальными. И последний способ для создания индексов — это создать его при помощи команды. Обычная команда, которая создаёт объекты в базе данных, — это команда CREATE. Для того чтобы создать индекс, мы пишем команду CREATE INDEX и указываем его специфические параметры. Как выглядит команда создания индекса? Посмотрим на слайд. После слова CREATE мы пишем тип индекса. Индексы бывают уникальными, полнотекстовыми или пространственными. Дальше мы пишем слово INDEX, потом указываем имя создаваемого индекса. После этого мы указываем таблицу, на которой индекс основан. Пишем ON, имя таблицы, и в круглых скобках мы указываем столбец, на основании значений которого строится индекс. И можем указать некоторые опции индекса. В качестве опций индекса можно указать возрастание или убывание значений поля, по которому строится индекс, или какие-то другие опции, которые специфичны для выбранной СУБД. Что мы можем указать при создании индекса? Мы можем сказать, что наш индекс будет уникальным, то есть значения столбца, по которому мы строим индекс, не могут содержать дубликатов. Можем строить индекс полнотекстовый или можем строить индекс пространственный. Это специальные виды индекса, которые нужны для определённого вида столбцов. Кроме того, мы можем указать столбцы, по которым мы строим индекс. Это может быть не один столбец, а целая комбинация столбцов. При этом порядок, в котором мы указываем столбцы для построения индекса, очень важен. Мы можем ограничить длину столбца. Если наше поле достигает достаточно больших размеров, то мы можем строить индекс не по всему полю, а по какой-то его фиксированной части, которая берётся от начала. Какие индексы существуют в современных СУБД? Наиболее распространены индексы на основе B-дерева — древовидные индексы, они используются во всех существующих реляционных СУБД. Дополнительно могут быть использованы индексы на основе функции хэширования, на основе битовых карт, пространственные индексы, которые строятся либо на основе grid-таблицы, либо на основе R-деревьев. Могут иногда встречаться многомерные индексы. И для поиска в больших текстовых полях можно создавать полнотекстовые индексы. Далее мы подробнее рассмотрим наиболее популярный вид индексов — древовидные индексы или индексы на основе B-дерева.