Jump to content
BrunoT

Mais eficiente - C# e SQLite

Recommended Posts

BrunoT

Bom dia,

Já tenho trabalhado algumas vezes com c# e outras vez com SQL, mas nunca tinha tido oportunidade de ter que usar as duas em conjunto.

A questão é a seguinte, imaginando que a minha class é algo tipo BI e Nome e na DB ter as mesmas colunas, qual é a forma mais eficiente para fazer pesquisas na DB ? Se é "carregando" todas as rows para objectos, ou sempre que quero fazer uma pesquisa faço directamente na DB ? Estou a utilizar SQLite.

Não tenho nenhuma preocupação específica em tempos de execução ou ocupação de memória, quero algo eficiente. A pergunta pode parecer estúpida, mas a minha ideia é que fazendo a pesquisa na DB é mais eficiente, a questão é que um professor meu da faculdade disse-me o contrário quando realizei um trabalho, na altura envolvendo C.

Obrigado

Bruno

Share this post


Link to post
Share on other sites
José Lopes

Quero ver isso quando tiver a pesquisar numa tabela de 10 milhões de registos...

Já para não falar que os SGBDS têm mecanismos para optimizar a consulta a dados.....


Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!

Share this post


Link to post
Share on other sites
softklin

Eu também tenho ideia que uma pesquisa na base de dados é mais eficiente, se souberes tirar partido das chaves primárias (identificadores únicos) e dos índices.

http://www.sqlite.org/lang_createindex.html

O próprio nome SGBD (sistema de gestão de base de dados) já por si indica que faz muito mais para além de guardar dados. Se criares índices nas colunas onde vais pesquisar com mais frequência, podes obter vantagens. Mas agora não te ponhas a colocar índices em todos os campos das tabelas, porque senão acabas por ter o mesmo problema :thumbsup: Não sei qual é o contexto em que o teu professor disse isso, mas até pode ter razão. Por exemplo, supõe que usas ficheiros binários, e fazes várias pesquisas: torna-se vantajoso reter alguma informação em memória, do que estar sempre a ler o ficheiro a cada pesquisa.

Já agora, como estás a aceder à base de dados com o C#?


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
bsccara

Não existe uma resposta padrão a essa pergunta, depende do problema a resolver. Se tiveres o programa a fazer lookups de nomes pelo nº de BI continuamente, tiveres a garantia que os dados cabem na memória em todas as situações e os dados forem imutáveis, obviamente é mais eficiente em termos de tempo de execução e tráfego de rede carregar todos os dados em memória à cabeça. Obviamente assumindo que estamos da falar dum SGBDS remoto; se fôr embebido no próprio programa é mais eficiente fazer a pesquisa no mesmo.

Share this post


Link to post
Share on other sites
BrunoT

Obrigado a todos pelas respostas, vou tentar responder a todas as perguntas.

Cada tabela tem um campo ID que é único, por isso a pesquisa será feita por aí. Não sei até que ponto uma ordenação por ID será vantajosa para uma pesquisa mais eficiente, se calhar neste caso não compensará porque os registos não serão em número assim tão grande.

Para aceder à BD tou a usar isto: http://sourceforge.net/projects/sqlite-dotnet2/?_test=b

Fiz uma pesquisa mais alagarda e cheguei à conclusão que não há mesmo resposta padrão. Por isso fiz uma análise assimptótica mental e rápida e acho que tenho mais benefício em fazer pesquisas directamente na BD. Até porque os computadores "alvo" desta aplicação serão com uns valentes anos de vida em cima, por isso tenho que ter alguma preocupação com a eficiência.

Obrigado a todos mais uma vez, qualquer dúvida relacionada com isto voltarei a utilizar este tópico.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.