
- •Для чего предназначены индексы, создаваемые в базе данных?
- •Как влияет наличие индекса на время выполнения операций с таблицами базы данных?
- •Как создать и удалить индекс?
- •Что означает понятие “кардинальность”?
- •Какие типы индексов предусмотрены в субд Oracle? Когда целесообразно создавать индекс определенного типа?
- •Специальные типы индексов
- •Битовые индексы (bitmap indexes)
- •Индексы с реверсированным ключом
- •Индексы со сжатым ключом
- •Индексы на основе функций
- •Секционированные индексы
- •Глобальные индексы
- •Локальные индексы
- •Невидимые индексы
- •Какие ограничения целостности и как создаются в субд Oracle?
- •Как запретить, разрешить, изменить или удалить созданные ограничения целостности?
- •Как создать, использовать и модифицировать последовательность?
- •Для чего предназначен синоним? Как его создать и удалить?
Кардинальностью колонки (cardinality) таблицы называется число дискретных различных значений колонки, которые встречаются в строках таблицы. Например, если в таблице "Служащий" (EMPLOYEE) мы заводим колонку для указания пола – "Пол" (SEX), то кардинальность этой колонки есть 2, так в природе у людей существует только два пола — мужской и женский. Для колонки первичного ключа кардинальность будет равна числу строк в таблице.
DROP TABLE OneTable;
CREATE TABLE OneTable(
NUMBER INTEGER(4) NOT NULL Primary key,
ALPHABET CHAR(1) NOT NULL,
VOWEL CHAR(1) NOT NULL
);
BEGIN
FOR Iter IN 1..50
LOOP
if(Iter<33)then
INSERT INTO OneTable VALUES (Iter,CHR(MOD(Iter+191,224)),CHR(218));
elsif (Iter>=33) then
INSERT INTO OneTable VALUES (Iter,CHR(MOD(Iter+159,224)),CHR(220));
end if;
END LOOP;
END;
-
Для чего предназначены индексы, создаваемые в базе данных?
Для быстрого поиска по таблице в базе данных.
-
Как влияет наличие индекса на время выполнения операций с таблицами базы данных?
Время поиска уменьшается, так как данные сортируются, а поиск по сортированному множеству всегда быстрее несортированного.
-
Как создать и удалить индекс?
Синтаксис создания индекса:
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;
-
Что означает понятие “кардинальность”?
селективность = (макс значение - мин значение отобранных данных)/(макс значение - мин значение всех данных) кардинальность ( число отобранных записей ) = селективность * число записей
Количество кортежей называют кардинальным числом отношения (кардинальностью), или мощностью отношения.
Кардинальностью колонки (cardinality) таблицы называется число дискретных различных значений колонки, которые встречаются в строках таблицы
Как я понял, кардинальность, это кол-во строк, из подчиненной Таблице которые соответствеют какой-то стркое в главной Таблице.
-
Какие типы индексов предусмотрены в субд 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;