Questão de Banco de Dados — SQL — Quadrix 2025
- Código
- qg595119
- Banca
- Quadrix
- Órgão
- CFO
- Ano
- 2025
- Nível
- Médio
- Cargo
- Técnico em Tecnologia da Informação
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: ERRADO (letra E). A afirmação está incorreta porque, embora o SQL seja uma linguagem declarativa que permite ao usuário especificar o que deseja, sem detalhar como obter, o SGBD não dispensa estruturas como índices e chaves — pelo contrário, ele as utiliza justamente para otimizar a execução das consultas. A otimização automática feita pelo SGBD depende dessas estruturas para acelerar o acesso aos dados.
O SQL (Structured Query Language) é a linguagem padrão para acesso e manipulação de bancos de dados relacionais. Sua principal característica é ser declarativa (ou não procedural): o usuário especifica o resultado desejado, e o SGBD decide internamente a melhor forma de executar a consulta. Isso não significa, porém, que estruturas como índices e chaves sejam desnecessárias. Pelo contrário, elas são fundamentais para o desempenho.
Os índices são estruturas de dados auxiliares (como árvores B ou tabelas hash) que o SGBD consulta para localizar rapidamente os registros que atendem a uma condição, evitando a varredura completa da tabela. As chaves (primárias e estrangeiras) garantem a integridade dos dados e também são usadas pelo otimizador para escolher o plano de execução mais eficiente. Sem essas estruturas, o SGBD teria que percorrer todas as linhas de uma tabela para responder a uma consulta, o que seria extremamente lento em bancos de dados grandes.
O otimizador de consultas do SGBD analisa a consulta SQL e escolhe o plano de execução mais eficiente, considerando fatores como a existência de índices, as estatísticas das tabelas e as operações de junção. Ele não "cria" índices automaticamente; ele apenas os utiliza se eles existirem. A criação de índices é uma decisão de projeto do administrador do banco de dados, baseada nos padrões de consulta da aplicação.
Um exemplo prático: em uma tabela Clientes com milhões de registros, uma consulta SELECT * FROM Clientes WHERE CPF = '123.456.789-00' será executada muito mais rapidamente se existir um índice sobre a coluna CPF. Sem o índice, o SGBD precisaria ler todas as linhas da tabela para encontrar o registro desejado. O otimizador reconhece a existência do índice e o utiliza, mas se ele não existir, a consulta será lenta.
A pegadinha da questão está em afirmar que o SQL dispensa índices e chaves. Na verdade, o SQL é uma linguagem que depende dessas estruturas para ter um bom desempenho. A otimização automática do SGBD é uma vantagem, mas ela não elimina a necessidade de um bom projeto físico do banco de dados, que inclui a criação adequada de índices.
A banca tenta fazer o candidato acreditar que a natureza declarativa do SQL torna desnecessárias as estruturas físicas de otimização. A confusão está em pensar que "declarativo" significa "sem necessidade de otimização". Na verdade, o SGBD otimiza usando índices e chaves, não apesar deles. Lembre-se: o otimizador é um consumidor dessas estruturas, não um substituto delas.
A afirmação está errada por dois motivos principais:
O SQL não dispensa índices e chaves: essas estruturas são essenciais para o desempenho das consultas. O SGBD as utiliza para otimizar a execução, mas não as cria automaticamente para cada consulta.
A otimização automática não é "sempre" perfeita: embora o SGBD otimize consultas, a eficiência depende de fatores como a existência de índices adequados, estatísticas atualizadas e a complexidade da consulta. O usuário pode influenciar a otimização por meio de boas práticas de escrita SQL e do projeto físico do banco.
A alternativa correta seria afirmar que o SQL é uma linguagem declarativa que permite ao usuário especificar o resultado desejado, e que o SGBD é responsável por otimizar a execução, utilizando estruturas como índices e chaves para melhorar o desempenho.
Gabarito: letra E (ERRADO).
Link permanente: /questoes/qg595119