Embora existam várias maneiras de melhorar o desempenho do banco de dados, 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 aumentar 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 quase pela 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 Exclusivo da Oracle
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 exclusiva, 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 UNIQUE INDEX conforme mostrado a seguir:
CREATE UNIQUE INDEX index_name ON table_name ( colunas ) ;
As colunas incluídas no índice não aceitarão nenhuma linha duplicada.
Exemplo de ilustração de tabela exclusiva
Para demonstrar como criar e usar um índice exclusivo, veja a tabela a seguir:
SELECIONE * FROM sample_data;
Saída :
Crie um índice exclusivo na coluna First_Name
A instrução de exemplo a seguir mostra como criar um índice exclusivo usando a coluna first_name:
criar índice exclusivo first_name_unique em sample_data ( primeiro nome ) ;Habilitando este índice, não podemos inserir mais de uma linha com o mesmo nome.
Tomemos, por exemplo, a seguinte instrução de inserção:
inserir em sample_data ( Eu iria , first_name, ip_address, btc_address, credit_card, identificador )valores ( onze , 'Wallas' , '169.158.70.77' , '1CNz5d1d5SC8SaR6dFSVihwztqYx5Fg77q' , '4017955174552' ,
'26811d77-0a3a-4397-bc33-f7835f7c7ab9' ) ;
Se executarmos a instrução de inserção fornecida, devemos obter um erro conforme mostrado a seguir:
[ 23000 ] [ 1 ] ORA-00001: restrição única ( HR.FIRST_NAME_UNIQUE ) violadoComo podemos ver, a inserção do valor fornecido viola a restrição exclusiva da coluna first_name.
Crie um índice exclusivo com duas colunas
Também podemos ter um índice exclusivo composto por mais de uma coluna. No exemplo a seguir, criamos um índice exclusivo usando as colunas first_name e io_address:
criar um índice exclusivo Verify_columns em sample_data ( primeiro_nome, endereço_ip ) ;Da mesma forma, adicionar valores duplicados para a coluna first_name ou ip_address resultará em erros de violação de índice exclusivos.
Índices Únicos Automáticos
Você já se perguntou o que acontece quando você declara uma coluna de tabela com uma chave primária ou restrição exclusiva?
Em termos simples, se você definir uma coluna como a chave primária da tabela ou atribuir uma restrição exclusiva a uma determinada coluna, o mecanismo de banco de dados criará automaticamente um índice exclusivo para essa coluna.
Isso garante que nenhum valor duplicado seja inserido nessa coluna.
Tomemos como exemplo a seguinte afirmação:
criar tabela sample_data(
Eu iria número,
first_name varchar2 ( cinquenta ) ,
endereço_ip varchar2 ( vinte ) ,
btc_address varchar2 ( cinquenta ) ,
cartão de crédito varchar2 ( cinquenta ) ,
identificador varchar2 ( 40 ) ,
chave primária sample_pk de restrição ( Eu iria )
) ;
No exemplo anterior, criamos uma tabela e definimos a coluna id como a chave primária da tabela. Em seguida, para visualizar a restrição exclusiva associada a essa coluna (gerada automaticamente), podemos executar o seguinte comando:
selecionar index_name, index_type, visibilidade, status, TABLE_NAMEde all_indexes onde TABLE_NAME = 'DADOS DE AMOSTRA' ;
Resultados :
Nesse caso, podemos ver o índice exclusivo criado pelo mecanismo de banco de dados para a coluna id.
Conclusão
Neste guia, você aprendeu como criar e usar índices exclusivos no banco de dados Oracle. Você também aprendeu o que acontece quando você atribui uma chave primária ou restrição exclusiva a uma coluna da tabela.