none
muitas.... RRS feed

  • Pergunta

  • Boa tarde,

    aguem pode me dar uma ajuda estou começando agora com Sql.

    eu tenho uma tabela com 250.000 registros quando dou um select demora quase 45 segundos para carregar em um datagrid do c#

    podem me ajudar ,,,por favor

    quarta-feira, 24 de outubro de 2012 18:41

Respostas

  • Pois é, com certeza a criação de índices ajudaria. Dependendo do índice, ajudaria muito. A questão é que criação de índice sempre é um assunto delicado, pois você corre o risco de melhorar uma coisa e piorar outra.

    Os índices sempre causam um overhead maior nas operação de inserção, atualização e remoção de dados. Além do fato de um índice nem sempre cobrir todas as consultas que são feitas, pois muitas vezes as consultas são bem diferentes, ainda que sejam realizadas nas mesmas tabelas.

    Então aconselho a você "brincar" com a criação de índices nestas tabelas mas, ainda que chegue a um bom resultado, avalie bem se, diante do seu cenário, a criação de tais índices realmente será conveniente.


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quinta-feira, 25 de outubro de 2012 10:18
    Moderador

Todas as Respostas

  • Como está construído seu Select e como está a estrutura da tabela?

    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quarta-feira, 24 de outubro de 2012 18:53
    Moderador
  • mostrar 250.000 registros em 45 segundos onde não estaria diretamente local no server SQL e em uma aplicação onde tambem ha influencia da rede acredito que não seria um tempo tão ruim, mas voce precisa mostrar todos esses registros ? voce utiliza algum filtro na sua consulta ?

    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quarta-feira, 24 de outubro de 2012 18:54
  • este e o select que uso no C# , outra coisa eu nao uso nas tabelas indices.....

    select Sj_pacientes.codigo as codigo, Sj_pacientes.nrmatricula as nrmatricula,Sj_pacientes.dtnascto as dtnasc, Sj_pacientes.nome as NOME, 

    Sj_pacientes.tel1r as TELEFONE, Sj_pacientes.cel_r as celular,  Sj_pacientes.contato as CONTATO, Sj_unidades.abrev as unidade, Sj_pacientes.ultconsulta as dtultconsulta, Sj_medicos.nome as nomeMed, Sj_especialidades.nome as nomeesp, 
    Sj_pacientes.situacao as SITUACAO, Sj_pacientes.indice as INDICE from Sj_pacientes
    left join sj_unidades on sj_unidades.codigo = Sj_pacientes.qual_unidade 
    left join Sj_medicos on Sj_medicos.codigo = Sj_pacientes.codmedico 
    left join Sj_especialidades on Sj_especialidades.codigo = Sj_pacientes.codespecialidade

    quarta-feira, 24 de outubro de 2012 19:08
  • estou testando no próprio note....
    quarta-feira, 24 de outubro de 2012 19:09
  • Pois é, com certeza a criação de índices ajudaria. Dependendo do índice, ajudaria muito. A questão é que criação de índice sempre é um assunto delicado, pois você corre o risco de melhorar uma coisa e piorar outra.

    Os índices sempre causam um overhead maior nas operação de inserção, atualização e remoção de dados. Além do fato de um índice nem sempre cobrir todas as consultas que são feitas, pois muitas vezes as consultas são bem diferentes, ainda que sejam realizadas nas mesmas tabelas.

    Então aconselho a você "brincar" com a criação de índices nestas tabelas mas, ainda que chegue a um bom resultado, avalie bem se, diante do seu cenário, a criação de tais índices realmente será conveniente.


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quinta-feira, 25 de outubro de 2012 10:18
    Moderador
  • Junior, boa noite,

    Concordo com o Roberson, é interessante testar os melhores índices a serem criados em sua tabela. Você também pode utilizar a cláusula INCLUDE na criação do índice melhorando a performace no retorno de algumas colunas que não façam parte da chave do índice.

    Porém, também aconselho avaliar a necessidade de mostrar 250.000 registros, acredito que é quase improvável que alguém vá analisar cada um desses registros. Talvez repensando a interface seu problema resolva e proporcionaria melhor interação com o usuário. HCI é um dos fundamentos mais importantes no desenvolvimento de sistemas, e muitas vezes não damos a importância que deveríamos dar.


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


    Classifique as respostas. O seu feedback é essencial.

    quinta-feira, 25 de outubro de 2012 23:40