segunda-feira, 3 de agosto de 2009

SQL Server 2008: Índices Filtrados

Um novo recurso interessantíssimo do SQL Server 2008 é o “Índice Filtrado”. Com ele, você cria condições que otimizam os índices e agilizam os resultados de uma consulta SQL.
Digamos, por exemplo, que temos uma tabela onde determinada coluna possui campos nulos. Basicamente, usa-se a cláusula WHERE na sintaxe de criação do índice:

CREATE INDEX [Nome_do_Indice]
   ON [Nome_da_Tabela (Nome_da_Coluna)]
   WHERE [Nome_da_Tabela (Nome_da_Coluna)] IS NOT NULL

Mas podemos ir mais além: Quando disse que este recurso era interessantíssimo, é porque já que podemos eliminar os registros nulos, podemos criar um índice único para esta mesma coluna, coisa que não era possível antes e cabia a aplicação realizar este controle:

CREATE UNIQUE INDEX [Nome_do_Indice]
   ON [Nome_da_Tabela (Nome_da_Coluna)]
   WHERE [Nome_da_Tabela (Nome_da_Coluna)] IS NOT NULL

Com este novo recurso ganha tanto o DBA (o banco de dados é quem passa a gerenciar registros duplicados), quanto o Desenvolvedor (que não precisa realizar este controle dentro de sua aplicação).

Um comentário: