Pergunta

Eu tenho um Calendário de mesa com cerca de 2 linhas.Esta é uma tabela de pesquisa, e será usado em várias associações.

As colunas são

CalendarId (PK, Clustered)
DateTimeValue
IsWeekDay
IsWeekend
IsHoliday

A minha pergunta é esta:Eu quero ter um índice DateTimeValue.

Quando devo criar este índice?

Em outras palavras, como o tamanho de uma tabela tem que ser antes de colocar um índice?

Foi útil?

Solução

Você adiciona o índice ao criar a tabela, antes que a primeira linha seja inserida. A indexação faz parte do design do modelo de dados, não uma reflexão tardia quando os dados começam a mostrar problemas.

Um índice ausente em uma tabela vazia ainda é um índice ausente.

Outras dicas

Você quer ter certeza de ter um índice sobre as coisas que você é necessário, não deseja "esperar" até que se torne um problema ... a essa altura, você perdeu tempo.

Mas, ao mesmo tempo, não crie um índice apenas para criar um, verifique se faz sentido para o aplicativo.

Por exemplo, dependendo da sua operação, acho que você pode ser "mais eficiente" para se agrupar no DatetimeValue, pois acho que você tem 1 entrada por dia.

Sempre adicione o índice para iniciar. Uma mesa nunca é também pequena ter um índice. Um índice se torna apenas um problema quando você tem uma tabela muito grande, pois inserções/atualizações/exclusão podem desacelerar.

Acho que o "DateTimeValue" seria a chave natural nesta tabela?Ele deve ter um índice exclusivo desde o início.

Em relação a outros campos, é improvável que os índices em IsWeekDay ou IsWeekend vai ser usado pelo otimizador, uma vez que têm baixa seletividade (IsWeekDay retorna 71% das linhas).

Editar Note também que esta é basicamente uma tabela somente leitura.Você pode adicionar qualquer índices de você como se só afectam a gravação do desempenho de uma vez a cada poucos anos, quando você adicionar uma outra de anos de dados para ele.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top