Depois de fazer uma boa normalização, você ainda precisa indexar a tabela? Como isso afetará o desempenho? Isso afetará o desempenho de alguma forma após uma boa normalização?
Quais colunas geralmente são indexadas se você já possui a chave primária e a chave estrangeira?
Parece que já é eficaz normalizar um banco de dados. Mas, eu posso ter pulado como a indexação afeta o banco de dados. Isso só é eficaz quando as consultas são usadas? Como isso funciona / executa e melhora um banco de dados?
database
sql
indexing
normalization
Franz Noel
fonte
fonte
Respostas:
Sim. De fato, você pode precisar prestar mais atenção aos seus índices. A normalização é sobre o armazenamento ideal . Isso geralmente está em desacordo com a velocidade de recuperação , pois são usadas consultas mais complexas com junções complicadas. Às vezes, as pessoas que mantêm bancos de dados que exigem velocidades rápidas de recuperação desregulamentam ou organizam seus dados em estruturas um pouco menos normalizadas para facilitar a recuperação.
fonte
Acho que você não entendeu o que a indexação faz para o desempenho do banco de dados.
Um índice ajuda o banco de dados a encontrar linhas. Os índices são estruturas de dados especializadas que, em troca de espaço em disco extra e algum desempenho ao inserir e atualizar, ajudam o mecanismo de banco de dados a permanecer em linhas correspondentes.
Como eles ocupam espaço extra e custam (um mínimo de) desempenho para mantê-los atualizados, você como designer de banco de dados deve criar índices explicitamente para se adequar aos padrões de aplicativos e consultas.
Os índices são ortogonais à normalização do banco de dados.
fonte
Sim após a normalização, você ainda precisa da indexação.
As tabelas com as quais você está trabalhando se beneficiam tanto quanto as tabelas que você tinha antes da normalização. Na realidade, por si só, são iguais: tabelas.
Uma coisa que você deve considerar é que os índices ajudam a encontrar os dados mais rapidamente. A normalização do design de um banco de dados é sempre boa, mas às vezes por motivos de desempenho, é necessário desnormalizar a implementação. Mas isso é apenas caso a caso.
fonte
Sim.
Os índices são um método para acelerar a pesquisa dos dados. Algumas consultas são feitas por chaves primárias, que geralmente são indexadas implicitamente pelo mecanismo de banco de dados, mas é provável que outras consultas usem outras colunas. Muitas vezes, algumas consultas pesquisam colunas que nem são únicas e, portanto, não podem se tornar chaves primárias após qualquer normalização. Você provavelmente terá que indexar essas colunas.
Há apenas uma maneira de saber quais índices criar. Tire todas as consultas no aplicativo, encontrar parâmetros exemplo representativo para eles e ter o motor de banco de dados mostrar seus planos de consulta (todos os motores de banco de dados têm
EXPLAIN
,EXPLAIN QUERY PLAN
ou comando similar; ele é chamado de forma diferente em diferentes motores) e teste quanto tempo demora. Do que criar índices que aceleram os que eram lentos. E não esqueça de soltar novamente os índices que você tentou, mas não ajudou a evitar o desperdício de recursos.fonte
Os índices geralmente são necessários em todas as tabelas, exceto as menores. Praticamente todas as chaves estrangeiras devem ser indexadas e apenas configurar um FK não significa que você tenha um índice (pelo menos não em alguns bancos de dados, verifique a documentação do banco de dados). Os campos nos quais você frequentemente se junta ou usa as cláusulas where devem ser indexados, se forem aqueles que se beneficiariam (você precisa de uma certa quantidade de variabilidade nos dados para que os booleanos não se beneficiem, por exemplo) e aqueles onde é possível indexar.
No entanto, cada índice reduz a velocidade de inserções \ atualizações \ exclusões enquanto acelera a seleção, portanto, escolha seus índices com cuidado.
Os índices são críticos para o desempenho aceitável em um banco de dados.
fonte
Para uma terceira forma normal, você definitivamente precisará de índices em todas as chaves primárias.
A necessidade de outros índices depende de como o banco de dados é usado. Por exemplo, se você procurar regularmente clientes em um código postal específico, pode ser uma boa ideia indexar a coluna zip_code na tabela de clientes.
fonte