2009-12-03 19 views
3

J'ai une énorme requête sur mon SQL Server 2005. Cela doit être exécuté une fois par jour, mais lorsque cette requête s'exécute temp db passe de 2 Go à 48 Go. Quel est le meilleur moyen d'optimiser ou de trouver la raison pour laquelle tempdb est en croissance lorsque cette requête ajoute/met à jour des enregistrements 80K avec (~ 120 colonnes) sur une seule table?Une grande requête augmente TempDB

Que dois-je faire sur cette requête que tempdb ne se développerait pas autant?

Toutes les suggestions seront appréciées.

REMARQUE: Cette requête ne comporte aucune table temptable ou variable de table ou CTE. juste tas de

INSERT INTO ... with MULTITABLE JOINS with SUBQueries... 

Répondre

1

Sans voir le code exact, il est difficile de vous aider. Mais la requête semble devoir être optimisée.

Bien sûr, vous pouvez simplement dimensionner votre temp db pour rester à 48 Go, au moins de cette façon, il a gagné, il faut prendre le temps de grandir quand cette chose fonctionne.

+0

Cette requête a été écrite par quelqu'un d'autre. Il s'avère que je ne devrais pas être aussi paresseux. J'ai regardé la requête et il fallait vraiment l'optimiser. J'ai créé seulement 3 requêtes sur 39. – THEn

1

Vous voudrez peut-être regarder this. Il est probable que votre requête utilise une table temporaire pour s'exécuter, mais il est très difficile de le savoir sans rien savoir à ce propos. En regardant la mise à jour de votre question, il semble probable que vos sous-requêtes utilisent la stratégie de la tentation, qui inonde votre TempDB. Essayez de vous débarrasser de ces sous-requêtes et/ou de réduire la quantité de données que vous utilisez dans une seule requête afin de réduire la croissance de votre TempDB.