Temos uma tabela com 54 colunas, ela é usada por muitos aplicativos, relatórios e usuários. A tabela é de um sistema legado, algumas colunas podem estar obsoletas.
Gostaríamos de descobrir quais colunas exatamente são realmente usadas - por SELECT
e UPDATE
consultas. Como isso pode ser descoberto?
Se isso for possível, gostaríamos de recebê-lo no formato abaixo:
Column1 - SELECT - 1,890,123 times
Column1 - UPDATE - 2,394 times
Column2 - SELECT - 5,222,456 times
Column2 - UPDATE - 567 times
Column3...
Uma ideia era escanear todos os repositórios GIT (código-fonte de apps) para essas colunas, mas alguns apps podem não estar no GIT de fato. E os relatórios não estão no GIT.
A pesquisa acima é para:
- Para descobrir colunas que não são consultadas e possivelmente se livrar delas.
- Para descobrir colunas que são muito consultadas e não são atualizadas, revise a possibilidade de criar um índice columnstore não clusterizado.
Você pode habilitar o Query Store em cada banco de dados que pode conter consultas que fazem referência a esta tabela. Por exemplo, a tabela Post é consultada no banco de dados StackOverflow, mas também pode ser consultada em outros bancos de dados.
Depois de habilitado, use as visualizações do Query Store para contar execuções por tipo de consulta (por exemplo, SELECT e UPDATE) para cada coluna.
Eu uso o sp_MSforeachdb para consultar as visualizações do Query Store em cada banco de dados.
O exemplo de código é para a tabela Posts do StackOverflow. Você pode modificá-lo para se adequar ao seu caso.
O resultado retornado será semelhante a este:
Você pode configurar o Query Store - para reter seus dados por mais tempo, para cobrir execuções raras, antes de coletar as contagens de execução. Por exemplo, colete e retenha dados de um ano antes de consultar as visualizações do Query Store e tomar qualquer decisão sobre a tabela.