none
Pesquisar dados em Sql Server RRS feed

  • Pergunta

  • Saúde e Prosperidade, pessoal

    Conversando com um amigo, ele disse que não é possível fazer um SELECT * FROM em um Banco de Dados se o Banco tiver muitos milhões de registros.

    Pessoal, isto é verdade? Se é verdade, qual é afinal a importância do Sql ter a capacidade de armazenamento, acima dos 50 Pentabytes?

    Agradecidamente,

    Augusto



    • Editado Augustop sexta-feira, 27 de abril de 2012 21:25
    sexta-feira, 27 de abril de 2012 21:20

Respostas

  • Augusto, boa tarde,

    Vamos lá... com certeza nossos colegas irão citar muitas outras questões, mas vou dar apenas uma prévia...

    É possível executar o SELECT * FROM  independente do tamanho do banco, porém você deve pensar nas consequências. Imagine seu cenário, um banco com pentabytes de dados. Vamos analisar o SELECT * FROM em uma tabela gigantesca, você estaria selecionando todas as colunas da mesma, subindo todos esses dados que estão armazenados no HD para memória (visto que o HD tem a capacidade muito maior de armazenamento que a memória ram), dependendo da quantidade de memória do seu servidor de banco e a quantidade de dados que estaria retornando, o servidor estaria trabalhando no limite. Visto que a maioria das vezes precisamos de apenas algumas colunas da tabela, não há a necessidade de retornamos todas, sem contar o I/O do disco.

    O ideal é que você crie suas consultas retornando apenas as colunas necessárias e com os devidos filtros para não retornar registros sem necessidade, pois dessa forma você estará poupando recursos (muitas vezes valiosos recursos) do seu servidor de banco, podendo ser melhor aproveitado. Uma query bem escrita tem um menor tempo de execução e consequentemente irá deixar o usuário mais satisfeito.

    Att,


    Rafael Godoi Sabadin
    http://www.linkedin.com/in/rafaelgodoisabadin


    Classifique as respostas. O seu feedback é essencial.

    • Marcado como Resposta Augustop sábado, 28 de abril de 2012 07:42
    sexta-feira, 27 de abril de 2012 21:39

Todas as Respostas

  • Augusto, boa tarde,

    Vamos lá... com certeza nossos colegas irão citar muitas outras questões, mas vou dar apenas uma prévia...

    É possível executar o SELECT * FROM  independente do tamanho do banco, porém você deve pensar nas consequências. Imagine seu cenário, um banco com pentabytes de dados. Vamos analisar o SELECT * FROM em uma tabela gigantesca, você estaria selecionando todas as colunas da mesma, subindo todos esses dados que estão armazenados no HD para memória (visto que o HD tem a capacidade muito maior de armazenamento que a memória ram), dependendo da quantidade de memória do seu servidor de banco e a quantidade de dados que estaria retornando, o servidor estaria trabalhando no limite. Visto que a maioria das vezes precisamos de apenas algumas colunas da tabela, não há a necessidade de retornamos todas, sem contar o I/O do disco.

    O ideal é que você crie suas consultas retornando apenas as colunas necessárias e com os devidos filtros para não retornar registros sem necessidade, pois dessa forma você estará poupando recursos (muitas vezes valiosos recursos) do seu servidor de banco, podendo ser melhor aproveitado. Uma query bem escrita tem um menor tempo de execução e consequentemente irá deixar o usuário mais satisfeito.

    Att,


    Rafael Godoi Sabadin
    http://www.linkedin.com/in/rafaelgodoisabadin


    Classifique as respostas. O seu feedback é essencial.

    • Marcado como Resposta Augustop sábado, 28 de abril de 2012 07:42
    sexta-feira, 27 de abril de 2012 21:39
  • Oi Rafael,

    Sua resposta foi muito boa e TIROU MUITAS DÚVIDAS...

    Muito obrigado mesmo

    sábado, 28 de abril de 2012 08:12