Segundo os resultados apresentados pela Pesquisa Anual de Co...

Próximas questões
Com base no mesmo assunto
Q2383208 Banco de Dados
Segundo os resultados apresentados pela Pesquisa Anual de Comércio (PAC) realizada em 2021 pelo IBGE, o Brasil possuía cerca de 1.039.000 empresas comerciais da área varejista, com cerca de 7.413.000 pessoas trabalhando nessas empresas em 31/12 daquele ano. Uma organização criou e populou um banco de dados relacional para a realização de estudos nessa área, com as tabelas EMPRESA, FUNCIONÁRIO, PRODUTO e VENDA, entre outras.
Nesse contexto, considere que, quando um determinado comando SELECT, que realiza acesso aos dados logicamente relacionados das quatro tabelas citadas, é executado no contexto apresentado, ele possui um alto tempo de resposta. Foi, então, avaliado que, dentre outras medidas, o desempenho da execução desse comando precisa ser aprimorado.
Nesse caso, é necessário observar se no plano de execução desse comando há
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: A - buscas sequenciais a dados de alguma tabela que podem ser melhoradas por meio de índices.

Para responder a esta questão com eficiência, é fundamental compreender o papel dos índices em um banco de dados. Os índices são estruturas especiais que armazenam uma pequena porção dos dados de uma forma que facilita a rápida localização de linhas dentro da tabela correspondente. Eles são comparáveis ao índice de um livro, que permite encontrar rapidamente a página que contém a informação desejada sem ter que ler cada página sequencialmente.

Quando um comando SELECT é executado e seu tempo de resposta é alto, isso pode indicar que o banco de dados está realizando uma busca sequencial (full table scan) para encontrar os dados necessários, lendo cada linha da tabela até encontrar os resultados correspondentes. Isso é geralmente ineficiente, especialmente em tabelas grandes.

A criação de índices apropriados pode melhorar significativamente o desempenho de consultas, permitindo que o sistema de banco de dados localize os dados mais rapidamente. Isso é verdade especialmente para colunas que são frequentemente usadas em condições WHERE, JOIN, ou como parte de ordenações (ORDER BY).

Portanto, a Alternativa A está correta porque identificar e criar índices para colunas que estão sendo acessadas sequencialmente pode diminuir o tempo de resposta para consultas, tornando o acesso aos dados mais eficiente.

É importante também notar que, enquanto índices melhoram a velocidade de leitura dos dados, eles podem ter um impacto no desempenho de escrita (inserções, atualizações e deleções), pois o índice também precisa ser atualizado. Contudo, essa preocupação não é mencionada na questão, o foco é claramente no desempenho da consulta de leitura (SELECT).

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

A) Certa - Buscas sequenciais podem ser melhoradas com o uso de índices, que aceleram a recuperação de dados.

B) Errada - Índices especiais para operações do tipo "loop" não são um conceito comum ou específico para otimização.

C) Errada - Muitos índices não prejudicam automaticamente o desempenho; depende da consulta e da modelagem do banco de dados.

D) Errada - Operações do tipo "divisão" e "junção" têm propósitos diferentes; substituí-las depende da lógica da consulta.

E) Errada - Operações do tipo "junção" são comuns e necessárias para acessar dados logicamente relacionados. Evitar junções pode prejudicar a integridade da consulta.

A alternativa correta é a letra A: buscas sequenciais a dados de alguma tabela que podem ser melhoradas por meio de índices.

Quando um comando SELECT que acessa dados logicamente relacionados de várias tabelas tem um alto tempo de resposta, pode ser devido à ausência de índices nas colunas usadas nas cláusulas WHERE ou JOIN. A criação de índices nessas colunas pode melhorar significativamente o desempenho das consultas, pois permite que o sistema encontre rapidamente os registros relevantes, em vez de realizar buscas sequenciais em toda a tabela.

As outras alternativas não são necessariamente aplicáveis para melhorar o desempenho de um comando SELECT que acessa dados de várias tabelas:

  • B) Índices especiais para operações do tipo “loop” sem utilização plena: Não é um conceito comum em otimização de consultas.
  • C) Muitos índices sendo utilizados, o que pode prejudicar o desempenho do comando: Embora seja verdade que muitos índices podem afetar o desempenho de inserções e atualizações, eles geralmente não prejudicam o desempenho de consultas SELECT.
  • D) Operações do tipo “divisão” e, caso haja, substituí-las por “junções” equivalentes: A substituição de operações do tipo "divisão" por "junções" pode melhorar o desempenho em alguns casos, mas não é a solução mais comum para melhorar o desempenho geral.
  • E) Operações do tipo “junção” e, caso haja, não utilizá-las: As junções são geralmente necessárias para consultar dados relacionados de várias tabelas, e evitá-las pode comprometer a integridade dos resultados da consulta.

Fonte: Chatgpt

a-

When a SELECT statement performs a sequential search or a full table scan, it examines every row in the table to find the desired data. This can be inefficient as it requires reading and processing a lot of data. Indices are data structures that provide a quick lookup mechanism to find rows in a table based on the values of certain columns. When you create an index on a column used in a WHERE clause or a JOIN condition, it can dramatically improve the performance of SELECT statements that involve filtering or searching based on those columns.

https://en.wikipedia.org/wiki/Select_(SQL)

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo