Suponho que você tenha boas razões para usar os guias como ids.
A fragmentação é principalmente um problema para digitalizações, menos para as pesquisas. A fragmentação tem um grande impacto nas leituras antecipadas e as buscas não usam nem precisam de leitura antecipada. Um índice não fragmentado com escolha de coluna fraca terá um desempenho sempre pior do que um índice de fragmentos de 99% com colunas boas e utilizáveis. Se você tivesse descrito as consultas de estilo de relatório do DW que examinam as tabelas, eu recomendaria concentrar-se em eliminar a fragmentação, mas, para a carga descrita, faz mais sentido se concentrar em buscas eficientes (abrangentes) e em varreduras (pequenas). / p>
Dado que o seu padrão de acesso é sempre orientado por @userId, esta deve ser a coluna mais à esquerda no índice clusterizado. Eu também adicionaria setOn como a segunda coluna no índice clusterizado porque ele adiciona algum valor marginal na maioria das consultas (digo marginal porque o @userId é tão seletivo, na pior das hipóteses é 90 registros de 90 mil., Que a filtragem extra adicionada por @setOn não é crítico). Eu não adicionei nenhum índice não clusterizado, a partir das consultas que você descreve não há necessidade de nenhum.
O único problema é a exclusão de registros antigos (a retenção de 30 dias). Eu recomendaria contra o uso de um índice NC secundário para satisfazer isso. Eu prefiro implantar um esquema de particionamento semanal com janela deslizante, consulte Como implementar um deslizamento automático Janela em uma tabela particionada no SQL Server 2005 . Com esta solução, os registros antigos são removidos por um switch de partição, que é apenas a maneira mais eficiente possível. Um esquema de particionamento diário satisfaria o requisito de retenção de 30 dias mais exatamente e talvez vale a pena tentar e testar. Hesito em recomendar 30 partições diretamente porque você descreve algumas consultas que têm potencial para procurar um determinado registro @userId em cada partição e 31 partições podem criar problemas de desempenho sob carga pesada. Teste e meça melhor.