Em geral, o SQL Server alocará a quantidade de memória permitida, sem usar o arquivo de paginação. Essa memória é usada como um cache para páginas de dados. (Há também um cache de plano e algumas outras coisas, mas acho que está fora do escopo desta questão.) Essa alocação tem o efeito de "esgotar" toda a memória livre no servidor e muitas vezes preocupa as pessoas que não são familiarizado com o SQL Server.
Não se preocupe com a quantidade de memória, preocupe-se com leituras de páginas físicas (que vêm do disco) e leituras de páginas lógicas (que vêm da memória. Listas de páginas lógicas não são tão problemáticas quanto leituras de páginas físicas porque ocorrem muito mais rapidamente, mas eles ainda demoram um tempo finito.Mesmo que você tivesse um terabyte de RAM e todo o seu banco de dados estivesse armazenado em cache na memória, ainda assim levaria um tempo finito para os processadores caçarem todos os seus dados. É sempre melhor se o SQL Server tiver menos dados para examinar, mesmo que seja totalmente armazenado em cache na RAM.
O acesso aos dados fica mais lento quando os dados não se encaixam na RAM e o servidor precisa lê-los no disco.
Na sua situação, parece que o SQL está lendo 20 GB de dados. Isso não caberá em 6 GB de cache de dados, portanto, o SQL Server reutilizará a memória carregando dados do disco por cima dos dados "antigos" que considera desnecessários. Se outra consulta, de outro usuário, aparecer 1 segundo depois, o SQL pode ter que voltar ao disco para reler os dados "antigos" de volta.
Ajustar consultas e melhorar a indexação deve fazer com que o SQL Server tenha menos dados para examinar, o que significa que é mais provável que os dados que devem ser examinados permaneçam no cache de dados, na RAM, e menos dados precisem ser lido a partir do disco, no caso de os dados necessários não estarem no cache de dados.
Aumentar a RAM ("jogar hardware no problema") também significa que há uma melhor chance de manter esses dados na RAM também, MAS você pode geralmente obter uma melhoria maior (talvez um fator de 10x ou mais, se você tem sorte e a indexação é muito ruim para começar - eu vi melhorias de 60x e melhor) do que você pode aumentar a quantidade de RAM disponível para dados de cache (geralmente é impossível aumentar a quantidade de RAM em mais de 2x ou 3x sem um novo servidor ou colocando muita tensão que não tenha sido planejada em seu ambiente de VM.) Concedido, geralmente é mais fácil / rápido conectar novos chips de RAM do que ajustar as consultas, mas algumas vezes você não tem alguma escolha.
Outra coisa que vale a pena fazer é certificar-se de que suas estatísticas de índice estão sendo atualizadas regularmente. Em ambientes sem DBA, essa manutenção costuma ficar de lado. Estatísticas desatualizadas podem fazer com que o mecanismo de consulta use planos ineficientes, e isso é particularmente visível / doloroso em tabelas grandes.
Uma última observação: Reiniciar o SQL Server irá liberar todos os dados do cache, e esses dados terão que ser recarregados a partir do disco conforme as consultas chegam depois que o SQL Server é reiniciado. Normalmente, isso significa que um SQL Server é mais lento após uma reinicialização, não mais rápido. Servidores SQL que são mais rápidos após uma reinicialização geralmente estão experimentando bloqueio excessivo (a reinicialização do servidor elimina todas as conexões bloqueadas e bloqueadas) ou eles têm visto uma tempestade de consultas que estão fazendo com que ele leia muitos e muitos dados do disco (Muitas vezes, essas consultas são causadas por usuários com problemas que reenviam a mesma consulta várias vezes, com alguns segundos ou minutos, porque as coisas estão "demorando demais").