SóProvas


ID
1055659
Banca
CESPE / CEBRASPE
Órgão
STF
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

Julgue os itens subsecutivos, com relação ao tunning de banco de dados.

No SQL Server, o uso de variáveis de tabela permite aumentar o desempenho de determinadas consultas.

Alternativas
Comentários
  • Apesar de nunca ter usado este tipo de variável, usei a lógica de que, pelo fato de estar em memória, terá um bom desempenho. Todavia a banca deu como errada. Veja o que diz o devmedia

    Tenho notado que este recurso é pouco utilizado por desenvolvedores T-SQL. Analisando as consultas realizadas nas bases de dados em que administro. Observei que muitos trechos de código T-SQL poderiam ser substituídos por tabelas variáveis para ganho de desempenho.

    Visando o desempenho e a melhor utilização dos recursos dos servidores de banco de dados. Podemos trocar a utilização das tabelas temporárias é se passasse a utilizar tabelas variáveis. Porém existem suas vantagens e desvantagens que coloco abaixo para todos analisarem;

    Vantagens

    - Devido à sua utilização estritamente local, tabelas criadas a partir de variável tipo TABLE não consomem recursos para controle de bloqueios;

    - A manipulação de dados em variáveis tipos TABLE é mais eficiente porque essas operações são minimamente locadas (um ROLLBACK após um INSERT não tem efeito em variáveis tipo TABLE);

    - Em função do seu escopo local, procedures que se utiliza de variáveis tipos TABLE estão sujeitas a um número menor de recopilações quando comparadas às tabelas temporárias.

    Desvantagens

    - A vida útil de uma tabela criada a partir de um variável tipo TABLE está limitada ao batch e/ou procedure onde é utilizada;

    - Com variáveis tipos TABLE não é permitido: Alteração da estrutura da tabela; Criação de índices não-cluster; Criação de constraints CHECK, DEFAULT; Criação e/ou atualização de estatísticas; Uma variável tipo TABLE não pode ser o destino de INSERT EXEC ou SELECT INTO; Uma variável tipo TABLE só pode ser referenciada por um comando SP_EXECUTESQL se a variável for criada.

    Variáveis tipo TABLE também consomem recursos do TempDB – na verdade tanto tabelas temporárias quanto variáveis tipo TABLE serão criadas em memória para pequeno volume de dados. O diferencial das tabelas temporárias é o log reduzido, o número baixo de recompilações e o ganho de desempenho com a ausência do controle de bloqueios.

    http://www.devmedia.com.br/trabalhando-com-tabelas-variaveis/11484

  • Creio que a banca deu como errada devido ao fato de que em variáveis de tabela não se pode criar índice, e possui um uso mais restrito, diferente das tabelas temporárias as quais se podem criar índices o que melhoraria a consulta relativamente.  

  • Não há essa garantia: depende do tamanho da tabela carregada na variável table. 

    https://msdn.microsoft.com/en-us/library/ms175010.aspx