
- •История развития субд.
- •Информационные системы. Основные функции и области применения.
- •Банк данных и его компоненты.
- •Классификация моделей представления данных
- •Сетевая модель данных. Достоинства и недостатки
- •Иерархическая модель данных. Достоинства и недостатки
- •Классификация программ субд
- •Общие понятия реляционного подхода к организации баз данных. Основные концепции и термины
- •Первичный и внешний ключи. Индексы
- •Реляционная алгебра. Основные операции
- •Реляционное исчисление
- •Проектирование реляционных баз данных с использованием нормализации
- •Целостность баз данных. Каскадное удаление и изменение данных.
- •Структуры внешней памяти. Хранение отношений. Индексы. Методы организации индексов. Служебная информация
- •Журнализация изменений бд
- •Сериализация транзакций. Синхронизационные захваты. Метод временных меток
- •Синхронизационные захваты
- •Транзакция. Уровни изолированности пользователей
- •Функции и основные возможности языка sql.
- •Отличие sql от процедурных языков программирования.
- •Интерактивный и встроенный sql
- •Типы данных sql
- •4.1. Тип данных «строка символов»
- •Varchar[(длина)]
- •4.2 Числовые типы данных
- •4.3 Дата и время
- •4.4 Неопределенные или пропущенные данные (null)
- •Простейшие select-запросы. Синтаксис
- •Операторы in, between, like, is null
- •Агрегирование и групповые функции. Упорядочение выходных полей
- •Команды манипулирования данными. Использование подзапросов в insert
- •Использование подзапросов, основанных на таблицах внешних запросов
- •Использование подзапросов с delete
- •Использование подзапросов с update
- •Основные особенности архитектуры клиент-сервер
- •Организация данных в InterBase.
- •InterBase и область его применения
- •Описание данных на основе sql Организация данных в InterBase. Типы данных.
- •Домены. Создание доменов. Изменение доменов. Удаление доменов.
- •Индексы. Создание индексов. Изменение индекса. Восстановление индекса. Удаление индекса.
- •4.1 Создание индексов
- •4.3. Восстановление индекса
- •4.4 Удаление индекса
- •Исключения. Создание исключения. Изменение исключения. Удаление исключения
- •Триггеры и их назначение. Команды создания, удаления и модификации триггеров и хранимых процедур.
- •Работа с blob и функции, определенные пользователем
- •Объявление внешней функции
Индексы. Создание индексов. Изменение индекса. Восстановление индекса. Удаление индекса.
При выполнении запроса InterBase сначала определяет список индексов, связанный с данной таблицей. Затем устанавливает, что является более эффективным, просмотреть всю таблицу или для обработки запроса использовать существующий индекс. Если InterBase решает использовать индекс, то поиск ведется сначала по ключевым значениям в индексе, а затем, используя указатели, осуществляется просмотр самих таблиц для дополнительной фильтрации и окончательной выборки требуемых данных.
Использование индекса обычно требует меньшего количества обращений к диску, чем последовательное чтение строк в таблице.
Индекс может быть определен как на отдельном столбце, так и на множестве столбцов таблицы.
Тем не менее, индексирование оправдано не всегда.
Следует помнить, что при всяком обновлении данных должны обновляться и индексы. Поэтому увеличиваются временные затраты на обновление данных. Кроме того, сами индексы после большого числа обновлений становятся несбалансированными, вследствие чего время поиска по ним возрастает.
В этих условиях при проектировании базы данных следует находить разумный компромисс между требованиями по ускорению поиска данных и требованию по скорости их обновления. В частности, использование индексов для небольших по объему таблиц вообще не оправдано. Если имеется индекс по группе полей, то писк по первому из полей группы может прямо использовать этот индекс, следовательно, нет смысла по нему делать отдельный индекс. Если поиск по каким-либо полям редок, то построение по ним индекса неэффективно. Если данные в столбце могут принимать лишь несколько значений, то выделение группы данных с заданным значение ключа, может сократить объем простого просмотра лишь в несколько раз. Это может и не компенсировать дополнительных затрат по поиску в индексе и большему времени выборки самих данных из-за выборки данных в порядке, отличном от естественного.
В то же время индексирование может дать большой эффект при работе с данными, которые часто используются, но редко меняются, например, в таблицах-справочниках. Если часто используются запросы, требующие соединения таблиц по какому-либо полю или группе полей, то от индексирования таблиц по этим полям может быть получен значительный эффект. Кроме того, индекс может быть полезен, если часто выполняется сортировка данных по столбцу или группе столбцов.
4.1 Создание индексов
Индексы создаются либо пользователем с помощью команды CREATE INDEX, либо автоматически при выполнении команды CREATE TABLE.
Для просмотра индексов, определенных для текущей базы данных, используется команда SHOW INDEX, после которой можно указывать имя таблицы – тогда индексы просматриваются для указанной таблицы. Для просмотра конкретного индекса используют команду SHOW INDEX <имя_индекса>.
InterBase автоматически генерирует индексы системного уровня по столбцу или набору столбцов, когда таблицы определяются с конструкцией ограничения PRIMARY KEY, FOREIGN KEY или UNIQUE.
Команда CREATE INDEX создает индекс на одном или нескольких столбцах таблицы.
CREATE [UNIQUE] [ASC][DESC]
INDEX <имя_индекса> ON <название таблицы> (<список полей>);
ASC и DESC задают способ упорядочения данных по возрастанию или по убыванию соответственно.
UNIQUE – задает режим уникального индекса. При задании такого режима блокируется запись в таблицу строк с одними и теми же значениями в столбцах, образующих индекс.
Пример. Создание уникального индекса по идентификатору студента для таблицы student
CREATE UNIQUE ASC
INDEX OD_IND ON STUDENT (STUDENT_ID);
Если предполагается сортировка как по возрастанию, так и по убыванию, то можно соответственно использовать два разных индекса.
4.2 Изменение индекса осуществляется командой
ALTER INDEX <имя индекса> {ACTIVE|INACTIVE}
Как видно из синтаксиса, данная команда не предназначена для явного изменения индекса. Она позволяет деактивировать или, наоборот, повторно активировать неактивный индекс. При реактивации индекса осуществляется его перестроение. Это можно использовать для оптимизации индекса, поскольку после большого числа изменений, он может стать несбалансированным.
На использование команды ALTER INDEX накладываются некоторые ограничения:
Нельзя выполнить команду ALTER INDEX, если изменяемый индекс используется в данный момент (например командами изменения или выборки);
Для выполнения команды необходимо обладать соответствующими правами.
Команда ALTER INDEX неприменима к индексам, используемым в качестве ограничений логической целостности, определенным, как UNIQUE, PRIMARY KEY, FOREIGN KEY.
ALTER INDEX неприменима для изменения состава столбцов в индексе. Для выполнения данной команды необходимо сначала удалить индекс, а затем создать его снова.