Pergunta

Eu tenho uma consulta que cria várias tabelas temporárias e depois insere dados nelas. Pelo que eu entendo, isso é uma causa potencial de bobo de mesa. Quando olho para o meu plano de execução, a maior parte do meu processamento é gasta em bobo de mesa. Existem boas técnicas para melhorar esses tipos de problemas de desempenho? O uso de uma visão ou um CTE me ofereceria algum benefício sobre as tabelas temporárias?

Também notei que, quando o mouse sobre cada spool de tabela, a lista de saída é da mesma tabela temporária.

Foi útil?

Solução

Bem, com as informações que você deu, só posso dizer isso: o otimizador de consulta escolheu o melhor plano possível. Ele usa carretéis de tabela para acelerar a execução. Alternativas que não usam carretéis de mesa seriam ainda mais lentas.

Que tal mostrar a consulta, o (s) esquema (s) da tabela (s) e a cardinalidade e o plano.

Atualizar

Eu certamente entendo se você não pode nos mostrar a consulta. Mas é realmente difícil adivinhar por que o spool é preferido pelo mecanismo, sabendo que existem detalhes específicos. Eu recomendo que você analise o blog de Craig Freedman, ele é um engenheiro da equipe do Otimizador de consultas e explicou muito do funcionamento interno do SQL 2005/2008 Optimizer. Aqui estão algumas entradas que pude descobrir rapidamente que tocam o tópico de spool de uma forma ou de outra:

A equipe de suporte ao cliente da SQL também tem um blog interessante em http://blogs.msdn.com/psssql/
E 'sqltips' (o blog de equipe do mecanismo relacional) tem algumas dicas, como Operadores de bobina no plano de consulta ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top