Eu tenho uma mesa que armazena notas
create tblNote(
Id int identity(1,1),
ParentId int ,
ParentType varchar(32),
NoteType varchar(32),
Note varchar(max),
CreatedBy varchar(25),
CreatedDate datetime,
.
.
.
<other metadata about the note>
)
Eu li muito recentemente sobre como o MSSS lida com índices (2005 e posteriores).
Eu tenho um índice clusterizado no ID
[Eu considerei alterar o índice clusterizado para parentId, parentType, pois é razoavelmente estreito e é estático. ]
A esmagadora porcentagem de consultas nesta tabela vai seguir as linhas de
select NOTE, createdDate, createdBy
from tblNote
where parentId = 12 and parentType = 'RFQ'
A pergunta que quero fazer hoje (embora qualquer feedback seja bem-vindo) é esta:
O índice NC que eu poderia adicionar é:
create index idx_nc_note_parent(
parentId ,
parenttype
)
include (createdby, createdDate)
Isso seria útil na criação de pequenas listas de notas onde poderíamos incluir quem e quando digitar informações.
Estou hesitante em incluir um varchar(max)
campo. Parece que realmente prejudicaria a quantidade do índice que seria armazenado em cache (isso é razoável ou irracional)
Supondo que eu não inclua o NOTE
campo, uma pesquisa RID será necessária para realmente buscar o conteúdo da nota, se solicitado.
Embora eu tenha lido um pouco sobre como as pesquisas de RID são caras, ainda deve ser melhor ter esse índice em vez de fazer uma varredura de tabela, CERTO?
[desculpas pelo bloco de código, adicionei os 4 espaços, mas talvez tenha feito errado? ]