none
Desempenho RRS feed

  • Pergunta

  •  

    Boa tarde a todos,

     

    Pergunta somente a critério de informação. O que é melhor!?? Usar tabela temporária ou variável tipo table? Em termos de performace? Nunca usei variável tipo table, mas pelo que percebi ela é usada da mesma forma de uma temporária.

    Espero não estar falando besteira.

    Agradeço a todos !!!

     

    Abraços;

     

    Chapolin.rio@gmail.com

    terça-feira, 23 de outubro de 2007 19:18

Respostas

  • Boa tarde Chapolin

     

     

    Excelente pergunta. Basicamente é a regra é a seguite:

     

    Utilize variáveis table quando o número de registros retornados forem pequenos e tabelas temporárias para volumes maiores de dados. As variáveis table são armazenadas em memória logo, um grande número de registros pode diminuir significativamente os recursos da sua máquina.As tabelas temporárias são armazenadas em disco logo tem um consumo maior de I/O, porém um menor consumo de memória. Existem alguns outros motivos, mas basicamente é isso.

     

     

     

    Espero ter ajudado

     

    terça-feira, 23 de outubro de 2007 19:58
  •  

    outro motivo importante e que usando tabelas temporarias suas proc por padrao sempre perderao o plano de execucao e serao recompiladas, eu uso var table quando preciso de cursor, e table temp quando preciso manter os dados por algum tempo,no mais a minha preferencia e var table.

     

    Abs.

    quarta-feira, 24 de outubro de 2007 08:03
  • Chapolin,

     

    Bom inicialmente é importante entender que estes dois objetos são totalmente distintos e não possuem nenhum tipo de relação.

     

    Uma variável do tipo table, é criada da mesma forma que qualquer outra variável, ou seja, no momento de sua criação o SQL Server reserva uma área de memória RAM, isso vai depender da quantidade de informações armazenadas dentro dos campo que esta alocados nesta var table.

     

    No caso uma table tempóraria, quando criada ela fica alocada dentro do banco de sistema TEMPDB, durante todo o processo de uso desta table, o SQL Server vai desconsiderar todo o plano de execução, isso poderá significar perda de performance quando você trabalha com muitos registros.

     

    O importante é analisar bem a sua necessidade, em particular eu costumo utilizar var table quando este processando poucos registros e em pequenos scritp's para teste, já as table temporárias utilizo com mais frequência em transações que importação e exportação de dados entre tables.

     

    quarta-feira, 24 de outubro de 2007 11:02

Todas as Respostas

  • Boa tarde Chapolin

     

     

    Excelente pergunta. Basicamente é a regra é a seguite:

     

    Utilize variáveis table quando o número de registros retornados forem pequenos e tabelas temporárias para volumes maiores de dados. As variáveis table são armazenadas em memória logo, um grande número de registros pode diminuir significativamente os recursos da sua máquina.As tabelas temporárias são armazenadas em disco logo tem um consumo maior de I/O, porém um menor consumo de memória. Existem alguns outros motivos, mas basicamente é isso.

     

     

     

    Espero ter ajudado

     

    terça-feira, 23 de outubro de 2007 19:58
  •  

    outro motivo importante e que usando tabelas temporarias suas proc por padrao sempre perderao o plano de execucao e serao recompiladas, eu uso var table quando preciso de cursor, e table temp quando preciso manter os dados por algum tempo,no mais a minha preferencia e var table.

     

    Abs.

    quarta-feira, 24 de outubro de 2007 08:03
  • Chapolin,

     

    Bom inicialmente é importante entender que estes dois objetos são totalmente distintos e não possuem nenhum tipo de relação.

     

    Uma variável do tipo table, é criada da mesma forma que qualquer outra variável, ou seja, no momento de sua criação o SQL Server reserva uma área de memória RAM, isso vai depender da quantidade de informações armazenadas dentro dos campo que esta alocados nesta var table.

     

    No caso uma table tempóraria, quando criada ela fica alocada dentro do banco de sistema TEMPDB, durante todo o processo de uso desta table, o SQL Server vai desconsiderar todo o plano de execução, isso poderá significar perda de performance quando você trabalha com muitos registros.

     

    O importante é analisar bem a sua necessidade, em particular eu costumo utilizar var table quando este processando poucos registros e em pequenos scritp's para teste, já as table temporárias utilizo com mais frequência em transações que importação e exportação de dados entre tables.

     

    quarta-feira, 24 de outubro de 2007 11:02
  • GALERA,

     

    Muito obrigado pelos post's.. Foram de muito ajuda. Na verdade para decidir o que usar deverá ser feito uma análise profunda da quantidade de dados manipulados no processo. O que me parece unanimidade, já dizia o saudoso Nelson Rodrigue: A Unanimidade é burra!!! rsrsrss, aí é que para pequena quantidade de registro usar a variável tipo table e para processos com maior quanitade de registros usar uma temporária.

    Beleza, vou começar a me atentar a esse detalhe, pois como disse antes nunca usei variável tipo table. A respeito do uso em substituição ao cursor eu nunca pensei nisso. Para substituir o cursor também usava tabela temporária, pois ela e sem dúvida nenhuma mais rápida do que um cursor. Nesse caso também deveria que respeitar o princípio de "quantidades de registros" correto??

    Poxa mais uma vez eu agradeço aí a contribuição dos usuários do post. Sempre é bom saber como otimizar nossos processos e sempre é bom saber que podemos contar com a galera da comunidade..

     

    Abraço a todos!!!

    quarta-feira, 24 de outubro de 2007 18:45
  • Chapolin,

     

    Obrigado pelo retorno, o que precisar estou a disposição.

    quarta-feira, 24 de outubro de 2007 18:53
  • Sempre pode contar comigo também.

     

     

    Gde abraço

    anderson.dpa@hotmail.com

     

    quarta-feira, 24 de outubro de 2007 19:05