Adapter com SQLite
18/05/2012
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.
Posts
18/05/2012
Joel Rodrigues
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...).
Como assim, não entendi Joel.
Agradeço a atenção.
18/05/2012
Joel Rodrigues
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.
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.
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.
18/05/2012
Joel Rodrigues
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á).
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.
21/05/2012
Joel Rodrigues
Já tentou executar uma instrução SQL de insert a partir de outro objeto? Um SqlCommand, por exemplo.
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.