Insert em massa a partir de uma select

1 resposta
R

Persistindo uma lista

Pessoal, estou com um problema, estou persistindo uma lista com um total de 500 registros, este processo está demorando cerca de 4 a 5 minutos,
Como eu poderia realizar este processo de uma única vez, já ví diversos tópicos relacionados a este, mas até agora não consegui resolver, segue meu bean

Este monta pra mim um delete e está funcionando perfeitamente, agora como faço para montar um insert a partir de uma select,

[b]@Override
public void deleteParticipantesDaSolicitacao(Integer solicitacao) {

Map<String, String> tables = new HashMap<String, String>();
StringBuilder where = new StringBuilder();
Map<Object, Object> parametros = new HashMap<Object, Object>();
	
if (solicitacao != null) {
		
	tables.put("participante", "ParticipanteDaSolicitacaoDeTreinamento");
	
	appendParameter(parametros, "solicitacao", solicitacao);
	appendClause(where, "participante.solicitacao = :solicitacao", solicitacao);
	
	Query query = generateQuery("delete ", tables, where.toString(), null, parametros);
		
	query.executeUpdate();

}

}[/b]
Exemplo do meu insert

Insert into tabela (codigo,solicitacao,usuario) Select sequence.nextval,1000,codigo from usuario where status = ‘A’

Obrigado, desde já agradeço.

1 Resposta

A

Olá renato,

Tens que ver alguns pontos na questão da demora. Quais são os parâmetros de busca de sql (hql), pode estar faltando alguma indexação de campo, tive um problema a pouco tempo por exemplo com TIMESTAMP, muita demora para analisar data completa, solução foi indexar pois era um campo essencial para a busca … Talvez ver se todos os campos de busca que tens de opções são necessários, ou melhorar o teu sql, ai é aprofundar nos estudos para ver performance, tem comandos equivalentes sql (hql) que para determinadas operações que são mais performáticos.

http://www.ebah.com.br/content/ABAAABIhsAF/construcao-comandos-sql-com-boa-performance

http://www.devmedia.com.br/artigo-sql-magazine-1-otimizacao-de-comandos-sql/6926

Sobre a questão do Insert, precisas fazer um insert com subSelect, da uma olhada nesses exemplos:

http://www.techonthenet.com/sql/insert.php

http://stackoverflow.com/questions/1493143/how-to-insert-a-foreign-key-using-a-sub-select-in-sql-server

Criado 19 de abril de 2013
Ultima resposta 19 de abr. de 2013
Respostas 1
Participantes 2