Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Otimizando uma consulta simples em duas tabelas grandes


Até onde eu sei, a melhor maneira de fazer uma consulta como essa "rapidamente" é criar uma tabela de resumo que rastreie as visualizações da página do amigo por página por criador.

Você provavelmente gostaria de mantê-lo atualizado com os gatilhos. Então sua agregação já está feita para você, e é uma simples consulta para obter as páginas mais visualizadas. Você pode ter certeza de ter índices adequados na tabela de resumo, para que o banco de dados nem precise classificar para obter os mais visualizados.

As tabelas de resumo são a chave para manter um bom desempenho para consultas do tipo agregação em ambientes de leitura predominante. Você faz o trabalho antecipadamente, quando as atualizações ocorrem (infrequentes) e as consultas (frequentes) não precisam fazer nenhum trabalho.

Se suas estatísticas não precisam ser perfeitas e suas gravações são bastante frequentes (o que provavelmente é o caso de algo como visualizações de página), você pode agrupar visualizações na memória e processá-las em segundo plano, para que os amigos não não precisam se dar ao trabalho de manter a tabela de resumo atualizada, à medida que visualizam as páginas. Essa solução também reduz a contenção no banco de dados (menos processos atualizando a tabela de resumo).