Embora várias maneiras de melhorar o desempenho do banco de dados existam, um recurso é quase universal para qualquer banco de dados. Índices de banco de dados são estruturas de dados ou objetos que são usados para melhorar a velocidade da recuperação de dados da tabela.
Quando usados corretamente, os índices de banco de dados podem reduzir a velocidade de uma consulta em quase metade, dependendo dos dados de destino, layout, recursos disponíveis etc.
Neste tutorial, você aprenderá a trabalhar com índices exclusivos em bancos de dados Oracle para evitar a disponibilidade de valores duplicados em uma coluna indexada.
ÍNDICE Oracle exclusivo
Podemos usar um índice exclusivo para garantir que nenhuma linha duplicada seja armazenada em uma determinada coluna. Se a coluna de um determinado índice contiver uma regra única, tentar adicionar duas linhas com um valor semelhante nessa coluna resultará em um erro que indica uma violação de restrição exclusiva.
No Oracle, podemos criar um índice exclusivo usando a instrução CREATE ÍNDICE, conforme mostrado no seguinte:
Crie Índice Index_name exclusivo em tabela_name (colunas);
As colunas incluídas no índice não aceitarão linhas duplicadas.
Exemplo de ilustração de tabela exclusiva
Para demonstrar como criar e usar um índice exclusivo, pegue a tabela a seguir:
Selecione * de sample_data;
Saída:
Crie um índice exclusivo na coluna First_Name
A declaração de exemplo a seguir mostra como criar um índice exclusivo usando a coluna First_Name:
criar índice exclusivo primeiro_name_unique em sample_data (primeiro_name);
Ao ativar esse índice, não podemos inserir mais de uma linha com o mesmo primeiro nome.
Tomemos, por exemplo, a seguinte declaração de inserção:
inserir em sample_data (id, primeiro_name, ip_address, btc_address, credit_card, identificador)
Valores (11, 'Wallas', '169.158.70.77 ',' 1cnz5d1d5sc8sar6dfsvihwztqyx5fg77q ',' 4017955174552 ',
'26811D77-0A3A-4397-BC33-F7835F7C7AB9');
Se executarmos a declaração de inserção fornecida, devemos receber um erro, conforme mostrado no seguinte:
[23000] [1] ORA-00001: restrição exclusiva (RH.Primeiro_name_unique) violado
Como podemos ver, a inserção do valor dado viola a restrição única para a coluna First_Name.
Crie um índice exclusivo com duas colunas
Também podemos ter um índice único composto por mais de uma coluna. No exemplo a seguir, criamos um índice exclusivo usando as colunas First_Name e IO_Address:
Crie índice exclusivo verify_columns em sample_data (primeiro_name, ip_address);
Da mesma forma, a adição de valores duplicados para a coluna First_Name ou IP_Address resultará em erros de violação de índice exclusivos.
Índices exclusivos automáticos
Você já se perguntou o que acontece quando declara uma coluna de tabela com uma chave primária ou restrição única?
Em termos simples, se você definir uma coluna como a chave primária da tabela ou atribuir uma restrição única a uma determinada coluna, o mecanismo de banco de dados cria automaticamente um índice exclusivo para essa coluna.
Isso garante que nenhum valor duplicado seja inserido nessa coluna.
Tomemos, por exemplo, a seguinte declaração:
Crie tabela amostra_data
(
número de identidade,
First_name Varchar2 (50),
ip_address varchar2 (20),
BTC_ADDRESS VARCHAR2 (50),
Credit_Card Varchar2 (50),
Identificador Varchar2 (40),
restrição amostra_pk chave primária (id)
);
No exemplo anterior, criamos uma tabela e definimos a coluna de identificação como a chave primária da tabela. Então, para ver a restrição exclusiva associada a essa coluna (gerada automaticamente), podemos executar o seguinte comando:
Selecione index_name, index_type, visibilidade, status, tabela_name
de all_indexes onde tabela_name = 'sample_data';
Resultados:
Nesse caso, podemos ver o índice exclusivo que é criado pelo mecanismo de banco de dados para a coluna ID.
Conclusão
Neste guia, você aprendeu a criar e usar os índices exclusivos no banco de dados Oracle. Você também aprendeu o que acontece quando atribui uma chave primária ou restrição única a uma coluna de tabela.