Três etapas muito rápidas para você começar:
1)
USE DatabaseName
SELECT [TableName] = OBJECT_NAME(object_id),
last_user_update, last_user_seek, last_user_scan, last_user_lookup
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID('DatabaseName')
Dirá a última vez que cada índice foi usado, incluindo o índice clusterizado. Portanto, pelo menos, forneça uma amostra de quais tabelas estão sendo acessadas (e quais não estão).
2) Ative uma sessão de Eventos Estendidos (ou rastreio do Profiler do lado do servidor, se você estiver executando o pré-SQL 2012) por uma hora ou mais enquanto o aplicativo estiver sendo usado. Você também pode solicitar que um usuário execute várias ações no aplicativo em uma ordem específica, para correlacioná-lo com o rastreio / sessão.
Uma sugestão útil: se você pode modificar a cadeia de conexão que o aplicativo usa, acrescente "; Nome do Aplicativo = AppNameGoesHere" para poder executar um rastreamento rastreando esse Nome do Aplicativo em particular. Boas práticas de qualquer maneira.
3) Obtenha uma versão do aplicativo trabalhando em um servidor que não seja de produção. Desenvolva uma lista de testes orientados por comportamento para o aplicativo ("Quando o usuário clica no botão Novo Item, ele cria um novo item para esse usuário" etc.) Comece excluindo objetos que você não tem nenhuma influência nos testes, renomeando-os. (Eu uso um formato como objectName_DEPRECATED_YYYYMMDD - com a data no dia em que pretendo realmente excluí-lo.) Reverifique todos os seus testes.
Por meio de uma combinação da sessão de Eventos estendidos, da DMV de uso do índice e da exclusão suave, você deve poder identificar os principais objetos que estão sendo usados pelo aplicativo e um bom consenso geral sobre qual objeto faz o quê.
Boa sorte!