Recebo um feed LDAP todas as noites. Eu o recebo como um arquivo de texto e despejo/crio minha tabela LDAPALL. Existem cerca de 75 mil funcionários vezes cerca de 50 campos.
Eu também tenho o seguinte:
LDAPIMPORTANTE - visualização que armazena todos os 75K, mas apenas 15 campos
LDAPSHORT - visualização que armazena todos os 75k, mas 5 campos
LDAPAB - visualização que armazena apenas 9 mil funcionários com base em dois grupos (pesquisa de campo)
Cada um deles é muito usado e para aplicativos diferentes e também há muitas visualizações escritas nessas visualizações. Mas não há atualizações para eles. Não atualizamos os dados dos funcionários. É apenas atualização LDAPALL uma vez por noite.
Nessa circunstância, devo criar tabelas da tabela LDAPALL em vez de exibições? Eu poderia configurar trabalhos para criar essas tabelas uma vez por noite. Qual é a melhor prática por trás disso? Fale em termos leigos porque sou um desenvolvedor PHP feito para fazer todas as coisas de administração de banco de dados.
Eu simplesmente usaria as visualizações se elas funcionassem. Não há necessidade de fazer cópias de dados desnecessariamente, e muitas plataformas de banco de dados permitem exibições indexadas ou materializadas e exibições filtradas, etc.
NO ENTANTO, o MySQL não suporta exibições indexadas. Portanto, a menos que os índices subjacentes em sua tabela ofereçam suporte às várias maneiras pelas quais você acessa os dados, pode valer a pena materializar você mesmo uma versão da exibição.
O conceito de substituir uma visualização por uma tabela que contém os mesmos dados (agora duplicados) é chamado de visualização materializada.
A resposta para sua pergunta pode estar aqui
Eu dei um +1 para as visualizações materializadas. Se isso fosse algo mais em tempo real, esse é o caminho a percorrer. Mas o fato de eu ter apenas uma atualização por dia sobre a população de usuários foi apenas muito trabalho para pouca recompensa.
Acabei montando um conjunto de consultas que são agendadas para criar as "sub-tabelas" que achei muito mais eficientes do que fazer as views. Temos cerca de 10 subtabelas que suportam tudo. A maioria deles leva cerca de 2 a 4 segundos para ser criada e são distribuídos por 20 minutos durante a noite.
Temos muitas visualizações criadas a partir dessas subtabelas e tudo está funcionando muito rápido em comparação com a criação de toneladas de visualizações em uma grande tabela - que tinha muitos dados que não usamos/necessitamos.