Insert em massa a partir de uma select

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.

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