Instrução CREATE INDEX Instrução CREATE INDEX

A instrução CREATE INDEX cria um índice em uma tabela. Os índices podem incluir uma ou mais colunas da tabela.

Sintaxe CREATE [UNIQUE] INDEX nome-do-índice ON nome-da-tabela ( nome-de-coluna-simples [ ASC | DESC ] [ , nome-de-coluna-simples [ ASC | DESC ]] * )

No , o número máximo de colunas para chave do índice é 16.

O nome do índice não pode ter mais que 128 caracteres.

O nome da coluna não pode aparecer mais de uma vez na mesma instrução CREATE INDEX. Entretanto, índices diferentes podem incluir a mesma coluna.

O pode utilizar os índices para melhorar o desempenho das instruções de manipulação de dados (consulte o ). Além disso, os índices UNIQUE fornecem uma maneira de verificar a integridade dos dados.

Os nomes dos índices são únicos no esquema (Alguns sistemas de banco de dados permitem que tabelas diferentes no mesmo esquema possuam índices com o mesmo nome, mas o não permite). É assumido que a tabela e o índice estão no mesmo esquema, se o nome do esquema for especificado para um dos nomes, mas não para o outro. Se o nome do esquema for especificado tanto para o índice quanto para a tabela, será lançada uma exceção se os nomes dos esquemas não forem o mesmo. Se não for especificado o nome do esquema nem para a tabela e nem para o índice, será utilizado o esquema corrente.

Índices descendentesÍndicescriados em ordem descendenter O utiliza, por padrão, a ordem ascendente de cada coluna para criar o índice. Especificar ASC após o nome da coluna não modifica o comportamento padrão. A palavra chave DESC após o nome da coluna faz com que o utilize a ordem descendente da coluna para criar o índice. Utilizar a ordem descendente para uma coluna pode ajudar a melhorar o desempenho dos comandos que requerem resultados em uma ordem de classificação mista ou na ordem descendente, e para os comandos que selecionam o valor mínimo ou máximo de uma coluna indexada.

Índicesespecificação do tamanho da página

Se for especificado um nome de índice qualificado, o nome do esquema não poderá começar por SYS.

Índices e restrições

Índices de apoiocriados automaticamente para garantir as restrições de chave primária, unicidade e de chave estrangeira Índicescriação automática para restrições de chave primária, unicidade e de chave estrangeira As restrições de unicidade, de chave primária, e de chave estrangeira, geram índices que impõem, ou "apoiam", a restrição (por isso, algumas vezes são chamados de índices de apoio). Se uma coluna, ou conjunto de colunas, tiver uma restrição UNIQUE ou PRIMARY KEY aplicada, não será permitido criar índice com estas colunas. O já terá criado um índice com nome gerado pelo sistema. Os nomes gerados pelo sistema para os índices que apoiam as restrições são facilmente encontrados consultando as tabelas do sistema, se for especificado o nome da restrição. Por exemplo, para descobrir o nome do índice que apoia a restrição PK_VÔOS:

SELECT CONGLOMERATENAME FROM SYS.SYSCONGLOMERATES, SYS.SYSCONSTRAINTS WHERE SYS.SYSCONGLOMERATES.TABLEID = SYSCONSTRAINTS.TABLEID AND CONSTRAINTNAME = 'PK_VÔOS'
CREATE INDEX ÍNDICE_ORIGEM ON VÔOS(AEROPORTO_ORIGEM); -- valores monetários são geralmente ordenados do maior para o menor, -- portanto o índice é criado na ordem descendente CREATE INDEX PAG_DESC ON SAMP.EMPREGADOS (SALÁRIO); -- utilizar um tamanho de página maior para o índice CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize','8192'); CREATE INDEX IDX_VENDAS ON SAMP.VENDAS (VENDAS); CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize',NULL);
Tamanho da página e comprimento da chave Em um índice, o tamanho das colunas chave deve ser igual ou menor que a metade do tamanho da página. Se o comprimento das colunas chave, de uma linha existente na tabela, for maior que a metade do tamanho da página do índice, a criação do índice para a tabela com estas colunas chave falhará. Este erro somente ocorre ao criar o índice, quando uma linha existente na tabela não respeita este critério. Após o índice ser criado, as inserções falham se o tamanho da chave associada não respeitar este critério.
Sistema de dependência de instruções

As instruções preparadas envolvendo SELECT, INSERT, UPDATE, UPDATE WHERE CURRENT, DELETE e DELETE WHERE CURRENT na tabela referenciada pela instrução CREATE INDEX são invalidadas quando o índice é criado. Os cursores abertos nas tabelas não são afetados.