Хотя существует множество способов повышения производительности базы данных, одна функция является почти универсальной для любой базы данных. Индексы базы данных — это структуры данных или объекты, которые используются для повышения скорости извлечения данных из таблицы.
При правильном использовании индексы базы данных могут снизить скорость выполнения запроса почти вдвое, в зависимости от целевых данных, макета, доступных ресурсов и т. д.
В этом руководстве вы узнаете, как работать с уникальными индексами в базах данных Oracle, чтобы предотвратить наличие повторяющихся значений в индексированном столбце.
Уникальный индекс Oracle
Мы можем использовать уникальный индекс, чтобы убедиться, что в данном столбце не хранятся повторяющиеся строки. Если столбец заданного индекса содержит уникальное правило, попытка добавить в этот столбец две строки с одинаковым значением приведет к ошибке, указывающей на нарушение ограничения уникальности.
В Oracle мы можем создать уникальный индекс с помощью инструкции CREATE UNIQUE INDEX, как показано ниже:
СОЗДАТЬ УНИКАЛЬНЫЙ ИНДЕКС index_name ON table_name ( столбцы ) ;
Столбцы, включенные в индекс, не будут содержать повторяющихся строк.
Пример уникальной иллюстрации таблицы
Чтобы продемонстрировать, как создать и использовать уникальный индекс, возьмите следующую таблицу:
ВЫБРАТЬ * ИЗ Sample_data;
Вывод :
Создайте уникальный индекс для столбца First_Name
В следующем примере оператора показано, как создать уникальный индекс, используя столбец first_name:
создать уникальный индекс first_name_unique для sample_data ( имя ) ;Включив этот индекс, мы не сможем вставить более одной строки с одним и тем же именем.
Возьмем, к примеру, следующий оператор вставки:
вставить в sample_data ( я бы , first_name, ip_address, btc_address, кредитная_карта, идентификатор )ценности ( одиннадцать , «Валлас» , «169.158.70.77» , '1CNz5d1d5SC8SaR6dFSVihwztqYx5Fg77q' , '4017955174552' ,
'26811d77-0a3a-4397-bc33-f7835f7c7ab9' ) ;
Если мы запустим данный оператор вставки, мы должны получить ошибку, как показано ниже:
[ 23000 ] [ 1 ] ORA-00001: уникальное ограничение ( HR.FIRST_NAME_UNIQUE ) нарушенКак мы видим, вставка заданного значения нарушает ограничение уникальности для столбца first_name.
Создайте уникальный индекс с двумя столбцами
У нас также может быть уникальный индекс, состоящий из более чем одного столбца. В следующем примере мы создаем уникальный индекс, используя столбцы first_name и io_address:
создать уникальный индекс verify_columns для sample_data ( первое_имя, ip_адрес ) ;Точно так же добавление повторяющихся значений для столбца first_name или ip_address приведет к ошибкам нарушения уникальности индекса.
Автоматические уникальные индексы
Вы когда-нибудь задумывались, что происходит, когда вы объявляете столбец таблицы с первичным ключом или уникальным ограничением?
Проще говоря, если вы установите столбец в качестве первичного ключа таблицы или назначите уникальное ограничение для данного столбца, механизм базы данных автоматически создаст уникальный индекс для этого столбца.
Это гарантирует, что в этот столбец не будет вставлено повторяющееся значение.
Возьмем, к примеру, следующее утверждение:
создать таблицу sample_data(
я бы количество,
имя_имя varchar2 ( 50 ) ,
ip_адрес varchar2 ( двадцать ) ,
btc_address varchar2 ( 50 ) ,
кредитная_карта varchar2 ( 50 ) ,
идентификатор varchar2 ( 40 ) ,
ограничение первичный ключ sample_pk ( я бы )
) ;
В предыдущем примере мы создаем таблицу и устанавливаем столбец id в качестве первичного ключа таблицы. Затем, чтобы просмотреть уникальное ограничение, связанное с этим столбцом (сгенерированное автоматически), мы можем запустить следующую команду:
Выбрать index_name, index_type, видимость, статус, TABLE_NAMEиз all_indexes, где TABLE_NAME = 'ОБРАЗЕЦ ДАННЫХ' ;
Результаты :
В этом случае мы можем увидеть уникальный индекс, созданный механизмом базы данных для столбца id.
Заключение
В этом руководстве вы узнали, как создавать и использовать уникальные индексы в базе данных Oracle. Вы также узнали, что происходит, когда вы назначаете первичный ключ или уникальное ограничение столбцу таблицы.