Estou executando um aplicativo de produção antigo que possui um banco de dados de back-end hospedado no SQL2008R2 no modo de compatibilidade 80 (SQL2000). Quando executo bits de TSQL para visualizar os planos de execução reais, o SSMS está me fornecendo índices sugeridos que são legais apenas para SQL2005+, por exemplo, aqueles com colunas incluídas. Como posso evitar que isso aconteça? Gostaria de ver os índices sensatos que ele pode sugerir.
NB: O modo de compatibilidade não pode ser alterado. Sim, estamos substituindo o aplicativo, isso eliminará totalmente a necessidade do banco de dados, mas não por algum tempo.
Obs: Já tentei, o SSMS está configurado "Script for server version" como SQL Server 2000.
Eu também tenho bancos de dados presos em CL80, também em 2008r2: acabei de testar e eles permitem que índices com
INCLUDE
colunas ed sejam definidos. Eu não testei explicitamente se eles são usados corretamente, portanto, antes de confiar nisso, verifique as consultas apropriadas para ver quais planos são criados.Se as colunas incluídas não forem usadas corretamente para evitar pesquisas, você pode traduzi-las para colunas usadas, ou seja,- editar: de acordo com o comentário de Paul, os índices criados comCREATE INDEX ix_test_u1_i2 ON tbl_test (i1) INCLDUE (i2)
se tornariamCREATE INDEX ix_test_u1_i2 ON tbl_test (i1, i2)
. No entanto, compare o resultado ou considere-o em seus planos de manutenção de índice, porque se as colunas posteriores forem bastante aleatórias, você poderá aumentar notavelmente o nível de fragmentação do índice (através de divisões de página na inserção/atualização).INCLUDE
colunas ed são usados corretamente pelo planejador de consulta, portanto, esse comentário é discutível. Claro, se o seu aplicativo tiver instâncias que ainda estão sendo executadas no SQL2000 , em vez de apenas ter CL definido como 80, isso muda isso de volta ...Como um aparte: as informações de índice ausentes exibidas pelo SSMS devem ser consideradas apenas como uma sugestão de que você considera algo - as sugestões podem ser potencialmente prejudiciais para o aplicativo em geral, especialmente se você seguir todas elas (o espaço extra usado pode ser bastante grande ).