none
Banco de dados lento com muitas linhas! RRS feed

  • Discussão Geral

  • Temos um banco de dados que possui tabelas com mais de 800 mil linhas.

    E quando realizamos algum select temos muita lentidão para obter resultados.

    Gostaria de saber a melhor forma de otimizar a velocidade nas consultas dessas tabelas.

    • Tipo Alterado Eder Costa sexta-feira, 16 de março de 2012 17:01
    segunda-feira, 12 de março de 2012 23:06

Todas as Respostas

  • Boa Noite,

    Precisamos ter um certo cuidado com a quantidade de linhas. A quantidade de linhas por si só não diz muita coisa, pois, não necessariamente muitas linhas significam um grande volume, além do que também não significa que você irá acessá-las todas de uma vez.

    A quantidade de linhas fala por si só ?
    http://gustavomaiaaguiar.wordpress.com/2010/01/21/a-quantidade-de-linhas-fala-por-si-so/

    Um bom ponto de partida seria relacionar as consultas mais lentas, utilizar o Database Tuning Advisor e verificar se há algum índice que poderia ser útil para acelerá-la.

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos:http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível

    terça-feira, 13 de março de 2012 01:41
  • a o firewall do windows e tenta novamente.

    CodSys Automação Comercial Cabo Frio - RJ

    terça-feira, 13 de março de 2012 02:20
  • Legal seu artigo Gustavo, obrigado pela ajuda.

    Para deixar mais claro meu problema executei o comando: EXEC sp_spaceused @objname = ‘TableName’, @updateusage = ‘true’

    nas tabelas com mais informações do sistema, segue abaixo:


    Acredito que na maioria das consultas que ocorrem lentidão, utilizo filtros nas colunas com datas (DateTime), seria esse um bom caso de eu criar indexadores por essas colunas? Caso sim, como faria isso utilizando SQL Server 2005 Management Studio?

    Valeu!!


    terça-feira, 13 de março de 2012 14:21
  • Vitor,

    Utilizo tabelas com muitos registros também, no meu caso, utilizo sempre indices em campos que vou utilizar como chave e ao mesmo tempo sempre procuro utilizar o shrink, para otimizar e reduzir o banco, lembrando que esse comando é inteiressante utilizar quando nao tiver usuários logados. Ao mesmo no meu caso, essas práticas funcionam bem, assim como particionar tabelas pode ser interessante também.

    Flw ! Vlw !

    terça-feira, 13 de março de 2012 14:37
  • Boa Tarde,

    O ideal é indexar as colunas utilizadas na cláusula WHERE, mas existem outros fatores a serem considerados. Eu acredito que se você não tem um conhecimento mais aprofundado no assunto indexação, é bom utilizar o Index Tuning Advisor nesse momento. Ele irá sugerir os melhores índices sem exigir que você tenha um conhecimento mais aprofundado. É um bom pontapé inicial, mas é claro que ele não substitui 100% a experiência e o conhecimento e um especialista.

    Caso queira aprofundar um pouco mais, visite meu canal no Youtube.

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos:http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível

    terça-feira, 13 de março de 2012 17:30
  • Boa Tarde,

    Eu não recomendo SHRINK em hipótese nenhuma salvo casos excepcionais.
    É um veneno para banco de dados. Os prejuízos que o SHRINK pode causar representam um assunto muito debatido aqui no fórum.

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos:http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível

    terça-feira, 13 de março de 2012 17:33
  • Boa tarde pessoal,

    Apenas relatando que no case onde atuo, o SHRINK funciona na prática, por esta razão que utilizo o mesmo, sendo que já vi este sendo usado em mais de uma empresa de portes grandes e funciona muito bem obrigado. Vale apena lembrar que nao existe solução correta e única e sim aquela que mais cabe com a dificuldade que você têm. A intenção é sempre colaborar e ajudar todos.

    Vlw ! Abraço !

    terça-feira, 13 de março de 2012 18:36
  • Vitor

    Como disse o Gustavo, o total de linhas não fala por si. Talvez estejam faltando índices para atender as suas queries, talvez a estrutura do banco precisa ser alterada, etc...

    Se a sua tabela tiver algum campo do tipo BLOB e esse campo fizer parte da sua query, pode causar a lentidão dependendo do volume de informações armazenadas.

    Enfim, existem vários motivos que afetam a performance de uma query e várias técnicas para melhorá-lamas não existe uma receita para isso. o DTA apontado pelo Gustavo é uma boa ferramenta, a análise do plano de execução também pode te ajudar de imediato. Mas voce precisa fazer um estudo sobre a query.

    []

    terça-feira, 13 de março de 2012 18:46