Adapter com SQLite
Estou desenvolvendo no ambiente DotNet, com c# e utlizando Datasets Tipados para realizar o processo de inserção em uma base de dados SQLite, tenho 10000 registros, esta levando um tempo de 10 minutos para realizar toda inserção, esta muito lento, como faço para otimizar e acelerar esse processo ?
if (dtBens.Count > 0)
{
if (pBensTableAdapter.Update(dtBens) <= 0)
return false;
}
return true;
Obrigado.
if (dtBens.Count > 0)
{
if (pBensTableAdapter.Update(dtBens) <= 0)
return false;
}
return true;
Obrigado.
Inovação Ltda
Curtidas 0
Respostas
Joel Rodrigues
18/05/2012
Nunca precisei fazer isso, mas será que se você filtrar seu dataset antes de inserir um novo registro não melhoraria um pouco? Por exemplo, selecionar apenas um registro ou nenhum (SELECT TOP 0...).
GOSTEI 0
Inovação Ltda
18/05/2012
Como assim, não entendi Joel.
Agradeço a atenção.
Agradeço a atenção.
GOSTEI 0
Joel Rodrigues
18/05/2012
Seu dataset possui vários registros, certo? Por exemplo, você faz um SELECT * FROM TABELA e depois insere um novo registro. Eu acredito que o dataset seja totalmente atualizado, logo, se você tiver poucos itens no dataset, esta atualização será pequena. Com base nesse pensamento eu te sugerir filtrar o dataset para que, no momento do insert, só haja um registro.
Bem, como te falei, nunca usei isso, é teoria mesmo.
Bem, como te falei, nunca usei isso, é teoria mesmo.
GOSTEI 0
Inovação Ltda
18/05/2012
Certo, joel, so que no meu caso tenho um Datatable contendo 10000 mil registros e insiro todos de uma vez utilizando o Update do Adapter, pois ja alimentei este datatable que será enviado.
Não consegui imaginar essa sugestão neste cenario.
Obrigado.
Não consegui imaginar essa sugestão neste cenario.
Obrigado.
GOSTEI 0
Fabio Rosa
18/05/2012
Uma perguntinha...
Você precisa inserir todos os 10000 registros de uma vez para o banco? Será que se quebrar em blocos menores de registros não ficaria mais rápido?
Só uma sugestão...
Att.
Você precisa inserir todos os 10000 registros de uma vez para o banco? Será que se quebrar em blocos menores de registros não ficaria mais rápido?
Só uma sugestão...
Att.
GOSTEI 0
Joel Rodrigues
18/05/2012
Rapaz, realmente nesse caso a minha dica não se aplica. Porém, repito a pergunta do colega acima: é realmente necessário inserir os 10000 registros de uma vez? Aí fica complicado pra qualquer banco que seja, né? Considere inserir de outra forma, faça testes pra ver qual é a melhor saída (executar instruções SQL de insert, usar Entity Framework, sei lá).
GOSTEI 0
Inovação Ltda
18/05/2012
Boa tarde.
Ja tentei de varias maneiras, inserindo 1 por 1, e inserindo todos de uma vez, 10000 não é uma quantidade alta para
inserção, não entendo porque é tão lento, no delphi dura menos de 10 segundos.
O resultado individual e total é o mesmo, varios minutos.
Neste cenario não posso utilizar entity.
Obrigado.
Ja tentei de varias maneiras, inserindo 1 por 1, e inserindo todos de uma vez, 10000 não é uma quantidade alta para
inserção, não entendo porque é tão lento, no delphi dura menos de 10 segundos.
O resultado individual e total é o mesmo, varios minutos.
Neste cenario não posso utilizar entity.
Obrigado.
GOSTEI 0
Joel Rodrigues
18/05/2012
Já tentou executar uma instrução SQL de insert a partir de outro objeto? Um SqlCommand, por exemplo.
GOSTEI 0
Inovação Ltda
18/05/2012
Bom dia, sim, ja tentei, so para terem ideia, fiz um teste usando O SQLite e SQL CE, para inserir 10000 mil registros no Lite, demora 15 minutos, no CE demora 0,88 segundos, o problema com certeza esta no SQLite, alguma configuração,versão ou outro processo que esta barrando a agilidade.
Obrigado.
Obrigado.
GOSTEI 0