2
respostas

Indíces influenciam nos campos do select?

Em SqlServer, se eu tenho uma tabela [TABELA] com os campos A, B e C. E crio um índice em B e C para a tabela. E faço o select abaixo:

Select A from [TABELA] where B = 1 and C = 1

Significa que ele não irá utilizar o índice criado devido eu ter utilizado o campo A no Select? Quando entrei aqui na empresa, os mais experientes utilizam o índice pelo que está na where, dessa forma explica muito não termos ganho de eficiência mesmo com o índice criado. Irei realizar os testes com o monitor e o trace, e ver o plano de execução no nosso banco.

2 respostas

Cleiton

No select mencionado por você o uso ou não do Índice dependerá do tipo usado. Se for um índice CLUSTERED o índice será usado. Se for NONCLUSTERED não. Somente será usado se os campos da cláusula SELECT coincidirem com o WHERE.

Na prática construa sempre índices CLUSTERED. Os índices NONCLUSTERED são usados internamente, somente quando temos uma chave estrangeira e são criados automaticamente pelo SQL SERVER (Apesar deste padrão ser configurável).

Att

Victorino.

Victorino, porém o índice clusterizado por padrão não é a pk? E este índice clusterizado eu só poderia ter 1 por tabela? Se sim no caso como eu resolveria, pois aqui temos muito processamento, consultas bem complexas que a necessidade de índices é imprescindível, percebi que existe um include na criação de índices do SqlServer, qual a sua finalidade?