Font size
WorksheetsBanco de Dados - SQL - Otimização de Consultas
Total questions: 28
Worksheet time: 14mins
Em um banco de dados relacional, o objetivo principal da otimização de consultas é:
compactar as maiores tabelas para economizar espaço de armazenamento.
diminuir o número de atributos existentes em cada tabela do banco de dados.
excluir todos os registros nos quais haja valores replicados.
excluir todas as tabelas com uma quantidade de acessos menor do que o mínimo especificado.
melhorar o desempenho das consultas submetidas ao banco de dados.
A otimização de consultas realizada pelo SGBD através da ordenação das operações de álgebra relacional em uma árvore de consulta é chamada de otimização baseada em :
regras heurísticas
pipeline
estimativas de custo.
regras de execução.
metadados
Em relação aos componentes de um Sistema de Gerenciamento de Banco de Dados (SGBD), analise as três características abaixo.
I- Preocupa-se com o rearranjo e possível reordenação de operações, eliminando redundâncias e utilizando os algoritmos e índices corretos durante a execução.
II- Consulta o catálogo do sistema para obter informações estatísticas e outras informações físicas sobre os dados armazenados, gerando código executável que realiza as operações necessárias para a consulta.
III- Faz chamadas ao processador de tempo de execução.
Qual componente de um SGBD apresenta essas três características?
Gerenciador de buffer.
Compilador de consultas.
Otimização de consultas.
Processador de tempo de execução do banco de dados.
Compilador DML.
Durante o processo de otimização de consultas SQL, o otimizador utiliza várias condições simples em uma condição de seleção conjuntiva. A condição que estabelece a razão entre o número de registros que satisfazem uma dada condição e o número total de registros no arquivo é chamada de:
facilidade.
reatividade.
seletividade.
disjuntividade.
computabilidade.
Com o crescimento da tabela PESSOAS, um administrador notou degradação significativa na execução da consulta.
Para otimizar a busca realizada por essa consulta, convém criar um índice sobre as colunas:
“id”, “nome” e “idade”.
“nome” e “id”.
“id” e “idade”.
“profissao” e “idade”.
“nome” e “profissao”.
O processo de otimização automática de consultas SQL envolve a conversão da consulta original, em uma forma canônica, que, em algum aspecto, destina-se à obtenção de uma representação mais eficiente que a original.
Certo
Errado
Uma das principais regras heurísticas da otimização de consultas é
traduzir a consulta em uma sequência de operações relacionais.
aplicar operações de seleção e projeção antes de aplicar a junção.
montar uma árvore de consulta equivalente.
representar a consulta em uma expressão de cálculo algébrico.
aplicar as operações binárias antes da seleção.
Com o crescimento de uma tabela, uma estratégia para otimizar consultas que usam ORDER BY col1, col2 é:
criar índice nas colunas col1, col2 (índice composto).
criar índice apenas em col2.
usar GROUP BY no lugar de ORDER BY.
aumentar o tamanho do buffer de aplicação.
reescrever a consulta para subselects.
Ao projetar uma consulta SQL para retornar dados de uma tabela com milhões de registros, é recomendado que o desenvolvedor utilize índices adequados. Uma prática que contribui para a otimização do desempenho dessa consulta é:
Criar índices para todas as colunas da tabela.
Utilizar somente índices compostos com três ou mais colunas.
Indexar somente as colunas utilizadas em filtros, junções e ordenações frequentes.
Criar índices em todas as colunas numéricas da tabela.
Evitar o uso de índices em tabelas de grande porte.
Em relação à otimização de consultas SQL, assinale a alternativa correta:
O uso de subconsultas sempre é mais eficiente do que junções.
Evitar a recuperação de colunas desnecessárias melhora o desempenho da consulta.
A utilização da cláusula SELECT * é recomendada para tornar a consulta mais rápida.
O uso de funções sobre colunas indexadas acelera o acesso aos dados.
O otimizador de consultas ignora a existência de índices ao gerar o plano de execução.
Em um banco de dados relacional, a criação de índices influencia diretamente o desempenho das consultas. No entanto, seu uso deve ser criterioso porque:
Índices aumentam a velocidade de consultas, mas podem aumentar o tempo de inserções, atualizações e exclusões.
Índices aceleram todas as operações no banco de dados, sem exceções.
Índices aumentam o uso de CPU, mas reduzem o uso de memória.
Índices são sempre criados automaticamente pelo SGBD para todas as colunas primárias e estrangeiras.
Índices eliminam a necessidade de otimizar consultas de outra forma.
Ao analisar o plano de execução de uma consulta no SGBD, o desenvolvedor observa que está ocorrendo um "Full Table Scan". Para reduzir o custo dessa operação, uma ação recomendada é:
Substituir a consulta por uma instrução DELETE.
Adicionar um índice apropriado na(s) coluna(s) utilizada(s) no filtro.
Utilizar SELECT * para garantir que todos os dados sejam carregados.
Criar mais tabelas para fragmentar a consulta.
Evitar o uso de índices em tabelas grandes.
Durante o processo de otimização de uma consulta SQL, o DBA recomenda o uso de "hints" (dicas) para orientar o otimizador de consultas. Essa técnica:
Substitui a criação de índices e é a forma mais eficiente de otimizar qualquer consulta.
Permite que o desenvolvedor force ou sugira o uso de determinados métodos de acesso, ou junções.
Elimina a necessidade de analisar o plano de execução.
É obrigatória para consultas com mais de três tabelas.
Deve ser utilizada em todas as consultas para garantir a consistência.
Ao otimizar uma consulta que utiliza a cláusula JOIN, uma recomendação comum para melhorar o desempenho é:
Substituir todos os JOINs por subconsultas correlacionadas.
Garantir que as colunas usadas para junção estejam indexadas.
Sempre usar JOIN NATURAL para aproveitar índices automáticos.
Ordenar as tabelas no FROM de acordo com seu tamanho.
Evitar o uso de índices em colunas utilizadas para junção.
Em relação à cláusula WHERE, qual das alternativas a seguir apresenta uma prática que favorece a otimização da consulta?
Usar funções nas colunas indexadas para acelerar a filtragem.
Comparar sempre colunas de tipos diferentes para reduzir o tempo de busca.
Garantir que as comparações sejam feitas sem conversões de tipo implícitas.
Utilizar expressões matemáticas complexas no filtro para reduzir registros.
Evitar o uso de índices nas colunas filtradas.
Para reduzir o tempo de resposta de uma consulta que envolve agregações (SUM, AVG, COUNT), uma prática recomendada é:
Criar índices sobre colunas agregadas frequentemente.
Sempre usar a função DISTINCT antes de agregar valores.
Substituir funções de agregação por subconsultas simples.
Evitar o uso de índices em colunas numéricas.
Utilizar a cláusula GROUP BY em todas as consultas, independentemente da necessidade.
O uso de estatísticas atualizadas no SGBD é fundamental para a otimização de consultas porque:
Permite que o otimizador escolha planos de execução mais eficientes.
Evita a criação de índices desnecessários.
Substitui a necessidade de escrever consultas bem estruturadas.
Garante que todos os índices sejam reconstruídos automaticamente.
Elimina o uso de junções.
Qual dos seguintes itens é minimizado pelo otimizador de consultas?
Tempo de resposta (CPU + E/S)
Uso de recursos (memória, bloqueios)
Número de usuários
Número de tabelas
Preencha o espaço em branco: O otimizador considera ________ (como tamanhos de tabelas e índices) e ________ (como varredura completa vs. varredura por índice) ao processar consultas.
estatísticas do banco de dados, custos relativos das operações
preferências do usuário, formatação da consulta
nomes dos bancos de dados, privilégios do usuário
nomes das colunas, tipos de dados
Quais comandos SQL são exemplos de otimização baseada em custo no Oracle?
ANALYZE TABLE clientes
COMPUTE STATISTICS
SELECT * FROM table
DROP TABLE
Liste as etapas do processamento de consultas segundo Elmasri & Navathe, na ordem correta.
1. Tradução 2. Otimização da Consulta 3. Definição do Plano de Execução 4. Geração de Código 5. Processamento em Tempo de Execução
1. Otimização da Consulta 2. Tradução 3. Definição do Plano de Execução 4. Geração de Código 5. Processamento em Tempo de Execução
1. Definição do Plano de Execução 2. Tradução 3. Otimização da Consulta 4. Geração de Código 5. Processamento em Tempo de Execução
1. Tradução 2. Definição do Plano de Execução 3. Otimização da Consulta 4. Geração de Código 5. Processamento em Tempo de Execução
O que a Análise Sintática verifica em uma consulta SQL?
Existência da tabela
Sintaxe da consulta
Plano de execução
Permissões
Preencha o espaço em branco: A seguinte instrução SQL possui um erro de sintaxe: SELECT * FROM clientes; -- Falta "T" em "SELECT". O que está faltando na instrução?
Está faltando a letra "T" em "SELECT".
Está faltando o ponto e vírgula no final.
O nome da tabela está escrito incorretamente.
Está faltando a palavra-chave "FROM".
O que a Análise Semântica valida em uma consulta SQL?
A) Sintaxe
B) Tabelas, colunas e permissões
C) Execução
D) Índices
Preencha a lacuna: A seguinte instrução SQL possui um erro semântico: SELECT * FROM clientes_inexistentes; -- Erro semântico. Qual é o erro?
A tabela 'clientes_inexistentes' não existe.
A coluna 'clientes_inexistentes' está escrita incorretamente.
A instrução SELECT está sem uma cláusula WHERE.
A instrução SQL está sem ponto e vírgula.
Qual é o objetivo de gerar planos alternativos (Geração de Planos Alternativos) durante a otimização de consultas SQL?
Para validar permissões
Para criar diferentes maneiras de executar a consulta
Para verificar a sintaxe
Para executar o plano escolhido
O que a Estimativa de Custo calcula durante a otimização de consultas SQL?
Ela calcula o custo para cada plano (CPU, I/O, memória).
Ela determina o número de tabelas no banco de dados.
Ela mede a velocidade da conexão de rede.
Ela calcula o número total de usuários acessando o banco de dados.
Qual é a etapa final no processamento de uma consulta SQL?
Análise Sintática
Análise Semântica
Otimização
Execução
