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);