Aumentar Velocidade BD x Lista [RESOLVIDO]

5 respostas
douglaskd

Recebo um Xls com 200.000 linhas.

preciso acessar o banco e verificar quais registros do BD não estão contidos no Xls.

fazer funcionar eu faço (com poucos registros), meu problema é desempenho.

acredito ser mais viavel, transformar esse Xls em um tipo de Collection para fazer a varredura.

alguem tem alguma sugestão, uma outra forma de pensar ?

  • pegar todos os registros do BD…
    repetir {
  • pegar um registro e verificar se o código esta contido no xls…
  • se sim não faz nada.
  • se não, da um update setando datafim no registro do BD.
    }

5 Respostas

drsmachado

De qualquer forma, o problema será ler as 200000 linhas do xls.
A partir do momento que obtiver estes dados, faça um select com um NOT IN e voilà…
Se bem que 200 mil parâmetros no filtro seria loucura…

douglaskd

valeu drs, tive uma idéia que resolve o problema.

  • vou setar todos os registros do BD ativos com uma “marcacao” (neste caso vou colocar uma datafim(que o usuário passar) em todos os que possuírem datafim = null ou seja ativos)

a cada iteração do XLS verifico se o registro existe no BD, se sim atualizo datafim para null (Ressuscito o Registro rs)

depois do for, faço um select para pegar todos os registros que a datafim for igual ao que o usuário havia passado.

estes seram os excluídos, pois não foram “Ressuscitados”

M

não entendi a necessidade do update, não seria mais facil fazer o select, manter os registros existentes e já executar o delete ?

E

douglaskd:
Recebo um Xls com 200.000 linhas.

preciso acessar o banco e verificar quais registros do BD não estão contidos no Xls.

fazer funcionar eu faço (com poucos registros), meu problema é desempenho.

acredito ser mais viavel, transformar esse Xls em um tipo de Collection para fazer a varredura.

alguem tem alguma sugestão, uma outra forma de pensar ?

  • pegar todos os registros do BD…
    repetir {
  • pegar um registro e verificar se o código esta contido no xls…
  • se sim não faz nada.
  • se não, da um update setando datafim no registro do BD.
    }

Dependendo do banco, você pode (usando o ODBC e associando o XLS como sendo uma fonte de dados ODBC) interpretar o seu arquivo XLS como se fosse uma tabela, e criar uma instrução SQL que faça o “join” dessas tabelas.

douglaskd

é um conceito de exclusão, ao invés de deletar o registro, eu preciso setar a datafim futura em que ele não será mais valido.

Criado 11 de junho de 2013
Ultima resposta 13 de jun. de 2013
Respostas 5
Participantes 4