Boa tarde pessoal,
Esta acontecendo a seguinte situação, tenho um banco de dados o qual possui uma coluna unica(UNIQUE). De ciclo em ciclo o sistema lê uma pasta de arquivos enorme para checar a existência de novos, quando encontra arquivo novo, este é analisado e tem suas informações inseridas no banco.
Ou seja, o sistema lê uma pasta, pega os arquivos novos e coloca as informações deste no banco.
O problema é a questão de performance, se eu deixo ele tentar colocar direto no banco, o banco retorna a Exception de chave unica duplicada e não insere os arquivos velhos (O que esta correto, e de certa forma é invisível pra quem usa o sistema, uma vez que as Exceptions nao param a execução da tarefa), entretanto estou querendo otimizar este processo, a minha idéia foi:
Ler a coluna unica do banco e colecionar ela, e a cada tentativa de inserção checar primeiro nesta coleção.
O grande problema é que o método contains, quando a listagem é grande tem a performance afetada fazendo com que a otimização em vez de ajudar atrapalhe, pois acaba havendo mais trabalho.
Eu gostaria de sugestões de como otimizar esta rotina.
Tentei variar o uso de coleções, gostaria de saber qual é a mais rápida pra consulta, tentei com a LinkedList e com a CopyOnWriteArrayList, mas mesmo assim a performance esta critica, será que seria mais rapido usar um array comum?([]).
So para enriquecer as informações, para inserir no banco quando o mesmo esta vazio, é bastante rápido.
Att. Paulo