Pular para o conteúdo principal

Questão de Banco de Dados — MySQL — FCC 2026

Banco de DadosMySQL
Código
fc142241
Banca
FCC
Órgão
MPE AP
Ano
2026
Cargo
Ana Min ( )
Um técnico precisa importar 1.000.000 de registros de processos de um grande arquivo CSV de um Ministério Público para uma tabela no MySQL, minimizando o tempo de importação. Nesse caso, a estratégia mais rápida é
  1. Ausar INSERT individual para cada linha do CSV (uma instrução INSERT por registro).
  2. Bler o CSV em PHP (ou outra linguagem de script) e fazer INSERT agrupado, por exemplo, em lotes de 100 registros.
  3. Cimportar via LOAD DATA INFILE (ou usando mysqlimport) apontando diretamente para o arquivo CSV.
  4. Dinserir os dados em uma tabela temporária via INSERT e depois fazer INSERT ... SELECT para mover para a tabela final com índices ativos.
  5. Eexportar o CSV em SQL (transformar cada linha em INSERT no arquivo .sql) e importar o .sql via phpMyAdmin.
Revelar gabarito e comentário

GabaritoC — importar via LOAD DATA INFILE (ou usando mysqlimport) apontando diretamente para o arquivo CSV.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Importação de dados em massa no MySQL

Gabarito: letra C. Para importar 1.000.000 de registros de um CSV no MySQL com o menor tempo possível, a ferramenta nativa LOAD DATA INFILE (ou o utilitário mysqlimport, que a utiliza internamente) é a estratégia mais rápida, pois lê o arquivo diretamente no servidor, em operação de baixo nível, sem passar pela camada de interpretação SQL de cada INSERT. As demais alternativas dependem de gerar e executar instruções SQL individuais ou em lotes, o que é significativamente mais lento para volumes dessa magnitude.

O problema central é a diferença entre importar dados e executar comandos SQL. Quando você usa INSERT, cada linha (ou lote) passa pelo parser SQL, pela verificação de privilégios, pela geração do plano de execução e pela escrita no log de transações — tudo isso com overhead por instrução. O LOAD DATA INFILE contorna esse caminho: o servidor lê o arquivo diretamente do sistema de arquivos, faz o parsing do CSV de forma otimizada e insere os registros em bloco, reduzindo drasticamente o tempo de importação. Para 1 milhão de linhas, a diferença é de minutos (ou até horas) para segundos.

Na prática, o comando seria algo como:

LOAD DATA INFILE '/caminho/arquivo.csv'
INTO TABLE processos
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

O mysqlimport é apenas um wrapper de linha de comando que faz exatamente isso, com a sintaxe mysqlimport --fields-terminated-by=',' --fields-enclosed-by='"' --lines-terminated-by='\n' banco tabela.csv. Ambos são a resposta canônica para importação em massa no MySQL.

A alternativa D menciona uma técnica válida de otimização (inserir em tabela sem índices e depois criar os índices), mas ela ainda depende de INSERT — e, no caso, propõe INSERT ... SELECT, que é mais lento que o LOAD DATA INFILE porque envolve a execução de uma consulta e a inserção linha a linha. A alternativa B (lotes de 100) é melhor que INSERT individual, mas ainda sofre o overhead de cada instrução. A alternativa E (gerar arquivo .sql e importar via phpMyAdmin) é ainda pior, pois o phpMyAdmin tem limites de execução e o arquivo .sql precisa ser interpretado.

A pegadinha da banca está em confundir "otimização de INSERT" (lotes, desabilitar índices, usar tabela temporária) com "importação nativa de arquivo". O LOAD DATA INFILE é a ferramenta específica para esse cenário, e é a que a banca espera que você conheça.

  1. 1Arquivo CSV no servidor
  2. 2LOAD DATA INFILE
  3. 3Leitura direta em bloco
  4. 4Inserção otimizada
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Um INSERT por linha significa 1.000.000 de instruções SQL. Cada uma passa pelo parser, pela verificação de permissões, pela geração do plano e pela escrita no log — um overhead enorme. É a estratégia mais lenta entre as apresentadas, mesmo com autocommit desabilitado.

Alternativa B — ❌ Incorreta

Inserir em lotes de 100 reduz o número de instruções (10.000 no total), o que é melhor que a alternativa A, mas ainda assim cada lote é uma instrução SQL interpretada. O LOAD DATA INFILE é mais rápido porque elimina a camada de interpretação SQL para cada registro.

Alternativa C — ✅ Correta ⟵ GABARITO

O LOAD DATA INFILE (e o mysqlimport) é a ferramenta nativa do MySQL para importação em massa de arquivos de texto. Ele lê o arquivo diretamente no servidor, em operação de baixo nível, e insere os registros em bloco, sendo a estratégia mais rápida para grandes volumes de dados.

Alternativa D — ❌ Incorreta

A técnica de inserir em tabela temporária (ou sem índices) e depois criar os índices é uma otimização válida para INSERT, mas ainda depende de executar instruções SQL. O INSERT ... SELECT é mais lento que o LOAD DATA INFILE porque envolve a execução de uma consulta e a inserção linha a linha.

Alternativa E — ❌ Incorreta

Exportar o CSV para um arquivo .sql com INSERTs e importar via phpMyAdmin é a pior estratégia: o arquivo .sql precisa ser interpretado pelo MySQL, e o phpMyAdmin impõe limites de tempo e tamanho de execução, tornando a importação ainda mais lenta e propensa a falhas.

PEGA ESSA DICA!

Na prova, quando a questão falar em importar um arquivo (CSV, TXT) para o MySQL, a resposta quase sempre será LOAD DATA INFILE ou mysqlimport. Guarde a diferença: INSERT é para inserir dados já em memória; LOAD DATA INFILE é para importar arquivos. Se a alternativa mencionar "lotes", "tabela temporária" ou "desabilitar índices", desconfie — são otimizações de INSERT, não a ferramenta nativa de importação.

Gabarito: letra C

Link permanente: /questoes/fc142241