Bancos de DadosVisão geral
Views, Índices e Otimização
O custo de avaliar uma consulta é o número de páginas de disco lidas e escritas para produzir o resultado. Varredura, índice e junção somam essas páginas.
Reescrita da view, C ≈ h + N_r, o laço aninhado e empurrar σ neste tópico — e B versus B⁺ e o processador de consultas nos tópicos seguintes — partem dessa soma.
As páginas se agrupam em quatro blocos. O primeiro decide o que o catálogo guarda para um SELECT nomeado: só a definição, recalculada a cada leitura, ou as tuplas já avaliadas, que exigem refresh.
O segundo declara a chave indexada em SQL e escolhe quais chaves criar, medindo páginas na igualdade e no intervalo.
O terceiro executa a junção com M páginas de memória: um bloco da externa residente enquanto a interna é varrida.
O quarto reescreve a árvore de σ, π e junção para reduzir o tamanho dos intermediários antes da operação cara.
Views Virtuais troca o nome da view pelo SELECT das tabelas-base. Views Materializadas persiste V = Q(T₁,…,Tₙ) e aplica refresh total ou incremental ΔV.
Índices em SQL declara a chave, o UNIQUE e o composto que só ajuda a partir da primeira coluna. Seleção de Índices compara C ≈ h + N_r com P e recusa hash em BETWEEN.
Laço aninhado por bloco calcula C = N_A + ⌈N_A/(M−2)⌉ · N_B. A sonda indexada, uma tupla da externa por vez, está em Seleção de Índices.
A equivalência σ_p(R ⋈ S) = σ_p(R) ⋈ S, quando p só cita R, está em Otimização Heurística de Consultas; a projeção precoce conserva a chave da junção. Contar páginas da junção já fixada está em Laço aninhado por bloco.
Páginas deste tópico
Views Virtuais
ProBaixa incidência no POSCOMP5 min de leitura · 25ª mais cobrada em Bancos de Dados
CREATE VIEW; consulta reescrita; AS nas colunas; porquê a view não armazena linhas.
Índices em SQL
ProBaixa incidência no POSCOMP6 min de leitura · 27ª mais cobrada em Bancos de Dados
CREATE INDEX; único vs não-único; porquê acelera WHERE; manutenção em UPDATE.
Seleção de Índices
ProMédia incidência no POSCOMP16 min de leitura · 21ª mais cobrada em Bancos de Dados
Custo ≈ páginas; igualdade vs intervalo; hash não percorre faixa.
Views Materializadas
ProBaixa incidência no POSCOMP10 min de leitura · 36ª mais cobrada em Bancos de Dados
Armazena o resultado; porquê persistir; refresh total vs incremental; reescrita.
Laço aninhado por bloco
ProBaixa incidência no POSCOMP13 min de leitura · 34ª mais cobrada em Bancos de Dados
custo de I/O do laço aninhado por bloco: páginas da externa lidas uma vez; páginas da interna lidas uma vez por bloco da externa que cabe na memória
Otimização Heurística de Consultas
ProBaixa incidência no POSCOMP8 min de leitura · 32ª mais cobrada em Bancos de Dados
heurística: empurrar σ e π para baixo da junção, conservando a chave na projeção precoce, porque o custo segue o tamanho dos intermediários