Tenho uma SELECT * FROM MyTable WHERE DataDate = '18-AUG-2013'
consulta simples em uma tabela que contém 340 colunas e 3,4 milhões de linhas.
A execução do plano de execução estimado no SSMS (Ctrl-L) sugere que eu crie um índice não clusterizado no DataDate e inclua todas as outras colunas?
Isso é uma coisa sensata a se fazer (em termos gerais)? Parece-me que isso aumentaria muito o espaço de indexação e o tempo de indexação em inserções, etc.?
Definitivamente não faça isso. As dicas de índice ausentes podem ser muito úteis, mas as recomendações podem ser idiotas , às vezes totalmente ridículas. Criar uma cópia de toda a tabela para o benefício desta consulta se encaixa no posterior.
Se suas consultas mais comuns usam um predicado on
DataDate
, pode ser apropriado alterar o índice clusterizado de suas tabelas para isso. Somente você pode fazer essa ligação com base em sua compreensão da carga de trabalho.SELECT *
em uma tabela de 340 colunas cheira suspeito. Você realmente precisa de todas essas colunas, sempre?