O sistema de gerenciamento de banco de dados DB2 , como acontece com a maioria dos bancos de dados relacionais , emprega arquivos especiais chamados índices para acelerar as pesquisas de registro. Na maioria das vezes , os programas de usar um índice para recuperar um registro específico de uma tabela de banco de dados , no entanto , o DB2 permite localizar vários registros que representam um intervalo. Neste último caso , você cria uma declaração Structured Query Language que usa as desigualdades , como maior ou menor do que . Por que usar um índice?
Sem um índice , um computador deve ler cada registro em uma tabela até que ele localiza um que combina um critério. Por exemplo, um varejista on-line tem uma tabela de banco de dados contendo 100.000 clientes . Quando Joe Smith faz logon com seu ID do cliente , o computador teria que ler dezenas de milhares de registros até que localizado o seu . Por si só , a operação leva alguns segundos ; multiplicado por milhares de clientes , este torna-se horas de processamento extra. Um índice armazena apenas os IDs do cliente em um arquivo separado organizado para acesso rápido. DB2 localiza a posição do registro desejado no arquivo depois de ler alguns registros de índice , com o número da posição , ele recupera o registro na tabela principal diretamente. Usando um índice, DB2 encontra um registro em poucos milésimos de segundo , acelerando muito muitas tarefas de banco de dados .
Igualdade e Desigualdade
Um programa típico usa uma igualdade para recuperar um registro indexado a partir de uma tabela do DB2 , como o seguinte código SQL ilustra :
Selecione customer_name , endereço , cidade, estado FROM Clientes WHERE customer_id = '51412 ' ;
a cláusula WHERE em a instrução SELECT iguala o campo customer_id a um valor de identificação do cliente. Ocasionalmente, você pode querer ver os registros com um intervalo de valores , como na seguinte instrução SQL:
Selecione customer_name , endereço , cidade, estado FROM Clientes WHERE customer_id > = '51400 ' ;
Aqui , a instrução puxa muitos registos da base de dados , começando com aquele que tem uma identificação do cliente maior ou igual a 51400 . A utilização da maior ou igual ao símbolo é um exemplo de uma desigualdade . Apesar de uma igualdade recupera registros correspondentes um único valor , uma desigualdade encontra registros de maior ou menor valor.
O operador Like
DB2 usa o índice de uma tabela onde possível, embora isso depende de cláusula WHERE de sua instrução SQL. Se a instrução tem desigualdades , o DB2 ainda pode usar o índice, mas a eficiência pode sofrer. O operador LIKE ilustra como o índice funciona em situações diferentes , com efeito a criação de desigualdades , com seus caracteres curinga , "% " e A instrução SQL mais eficiente seleciona uma série única, sem interrupção , como o seguinte SQL mostra "_ ". :
Selecione customer_name , endereço , cidade, estado FROM Clientes WHERE customer_id COMO '514 % ' ; " . 514 "
a declaração encontra todos os registros que possuem customer_IDs começando com o DB2 encontra o primeiro registro que atende a esse critério , recupera todos os registros subseqüentes que correspondem , em seguida, pára. A próxima instrução SQL é menos eficiente :
Selecione customer_name , endereço , cidade, estado FROM Clientes WHERE customer_id LIKE ' _1400 ';
Aqui, o caractere curinga "_" especifica todos os IDs dos clientes que terminar com " 1400 ", mas que começa com qualquer número. DB2 deve procurar a maior parte do índice, encontrando todas as IDs que começam com "1", "2" e assim por diante até o final da tabela . O índice poupa menos tempo nesta situação.
Campo multi- índices
As cláusulas WHERE de muitas instruções SELECT especificar vários campos. Para melhorar a velocidade desses SELECTs , um índice pode acomodar mais de um campo . Por exemplo, o seguinte SQL procura por registros usando uma combinação de operações de igualdade e desigualdade :
Selecione customer_name , endereço , cidade, estado FROM Clientes WHERE estado = ' IL ' AND zip_code > = '60600 ' ;
Se você costuma recuperar dados usando os mesmos campos e critérios , criar um novo índice que combina os campos. Para uma melhor eficiência, colocar os campos de igualdade no índice de primeiro lugar, seguido pelos campos de desigualdade.