Exemplo de Uso de Índices com Consultas SQL

Estes exemplos mostram como os índices podem ser aplicados nas consultas SQL.

Exemplo 1

Se o campo Gravidade ou Serial for indexado, o índice no campo Severidade (fornecendo-o é um índice de árvore) pode ser usado na consulta SQL a seguir porque todas as linhas terão que atender a expressão Severity > 3. O índice no campo Serial não é usado porque um operador OR é usado para conectar dois predicados.
select Summary from alerts.status where 
   Severity > 3 and (Serial = 102 or ServerName = 'NCOMS');

Exemplo 2

Se um índice da árvore for criado no campo Severidade, o índice no campo Severidade poderá ser usado na seguinte consulta SQL. No entanto, um índice em LastOccurrence não pode ser usado por causa do operador OR entre o predicado LastOccurrence > getdate() - 360 e o predicado Summary like 'LinkUp' Note, no entanto, que a expressão getdate() - 360 é considerada constante para a duração da consulta.
select Summary, Severity, Node from alerts.status where 
   Severity > 1 and (LastOccurrence > getdate() - 360 or Summary like 'LinkUp')

Exemplo 3

Considere a seguinte consulta:
select Summary from alerts.status where Severity > 0;

Para um operador de comparação como >, >=, < ou <= a ser usado com um índice, um índice de árvore (que é um índice ordenado) é necessário. Se apenas 100 de 20.000 linhas tiverem Severidade 0, esse índice reduzirá o número de linhas examinadas em apenas 0,5% e não fornecerá um benefício de desempenho significativo. Portanto, os dados de linha reais deverão ser levados em conta para decidir qual coluna será indexada.

Exemplo 4

Se um índice de hash for criado na coluna Nó, quando a seguinte consulta SQL for executada, apenas três consultas hash serão executadas para a ferramenta, barra, e barra de ferramentas ao invés de examinar cada linha para igualdade de Nó e um dos três valores.
select Identifier from alerts.status where Node in ('tool', 'bar', 'toobar');

Exemplo 5

Se um índice da árvore for criado na coluna Severidade, quando a seguinte instrução SELECT for processada, apenas os valores de Severidade 2 e 3 serão procurados e retornados.
select * from alerts.status where Severity > 1 and Severity < 4;
Se uma cláusula ORDER BY incluir mais de uma coluna, um índice será usado para a primeira coluna, se disponível.
select Identifier, Serial from alerts.status order by Severity;

Exemplo 6

Se houver 20.000 linhas na tabela alerts.status, e um índice no campo ServerSerial for aplicado na seguinte consulta, apenas duas linhas serão examinadas em vez de 20.000:
select Summary from alerts.status where ServerSerial in (102,103);

Exemplo 7

Tivoli Netcool/OMNIbus suporta o uso de índices por cláusulas de subseleção em consultas SQL, como nos exemplos a seguir:

select * from alerts.status where Identifier in (select key from alerts.bar);
select * from alerts.status where Serial in (select serial from alerts.broken_events);