Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Oracle - MS Server / OracleМП / Lab4 / отчёт.docx
Скачиваний:
39
Добавлен:
17.04.2018
Размер:
42.24 Кб
Скачать

Лабораторная работа №4 Контрольные вопросы

  1. Для чего предназначены индексы, создаваемые в базе данных?

Для быстрого поиска по таблице в базе данных.

  1. Как влияет наличие индекса на время выполнения операций с таблицами базы данных?

Время поиска уменьшается, так как данные сортируются, а поиск по сортированному множеству всегда быстрее несортированного.

  1. Как создать и удалить индекс?

Синтаксис создания индекса:

CREATE [UNIQUE] INDEX index_name   ON table_name (column1, column2, . column_n)   [ COMPUTE STATISTICS ];

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

Параметр COMPUTE STATISTICS командует Oracle-у собирать статистику в процессе создания индекса. Эта статистика в последствии используется оптимизатором при выборе «plan of execution» в процессе выполнения SQL-запроса.

Например:

CREATE INDEX supplier_idx    ON supplier (supplier_name);

В этом примере, мы создали индекс на таблице supplier с именем supplier_idx. Он содержит только одно поле – supplier_name.

Также мы можем создать индексы с большим, чем одно, количеством полей, как в следующем примере:

CREATE INDEX supplier_idx    ON supplier (supplier_name, city);

Мы также можем включить сбор статистики создав индекс следующим образом:

CREATE INDEX supplier_idx   ON supplier (supplier_name, city)   COMPUTE STATISTICS;

Синтаксис удаления индекса:

DROP INDEX index_name;

Например:

DROP INDEX supplier_idx;

  1. Что означает понятие “кардинальность”?

селективность = (макс значение - мин значение отобранных данных)/(макс значение - мин значение всех данных) кардинальность ( число отобранных записей ) = селективность * число записей

Количество кортежей называют кардинальным числом отношения (кардинальностью), или мощностью отношения.

Кардинальностью колонки (cardinalityтаблицы называется число дискретных различных значений колонки, которые встречаются в строках таблицы

Как я понял, кардинальность, это кол-во строк, из подчиненной Таблице которые соответствеют какой-то стркое в главной Таблице.

  1. Какие типы индексов предусмотрены в СУБД Oracle? Когда целесообразно создавать индекс определенного типа?

Уникальные и неуникальные индексы. Уникальные индексы основаны на уникальном столбце – обычно вроде номера карточки социального страхования сотрудника. Хотя уникальные индексы можно создавать явно, Oracle не рекомендует это делать. Вместо этого следует использовать уникальные ограничения. Когда накладывается ограничение уникальности на столбец таблицы, Oracle автоматически создает уникальные индексы по этим столбцам.

Первичные и вторичные индексы. Первичные индексы – это уникальные индексы в таблице, которые всегда должны иметь какое-то значение и не могут быть равны null. Вторичные индексы – это прочие индексы таблицы, которые могут и не быть уникальными.

Составные индексы – индексы, содержащие два или более столбца из одной и той же таблицы. Они также известны как сцепленные индексы (concatenated index). Составные индексы особенно полезны для обеспечения уникальности сочетания столбцов таблицы в тех случаях, когда нет уникального столбца, однозначно идентифицирующего строку.

(B*tree)

В реализации индексов на основе B-деревьев используется концепция сбалансированного (на что указывает буква ‘B’ (balanced)) дерева поиска в качестве основы структуры индекса. В Oracle имеется собственный вариант B-дерева. Это обычные индексы, создаваемые по умолчанию, когда вы применяете оператора CREATE INDEX.

Индекс создается с помощью оператора CREATE INDEX 

CREATE INDEX employee_id ON employee(employee_id)

TABLESPACE MY_INDEXES;

Соседние файлы в папке Lab4