-
left join ou #tmpTable
Bonjour,
la question peut paraître bête, mais je me la pose. Depuis 3semaines je me retrouve avec des requêtes imbriquées en left join en grande quantité, et là je me pose la question. Est il préférable de faire 10 requêtes imbriquées en left join ou de faire 10 tables temporaires et de rassembler les résultats ensuite?
Je vous pose la question parce que je ne m'y connais pas assez pour y répondre moi même...
Les tables Temporaire sont elles mangeuses de ressources ou est-ce bien géré par SQL Server?
Si vous avez un lien qui peut me permettre d'y répondre plus explicitement que msdn je suis preneur :)
Cordialement,
Lyche
-
Une table temporaire oblige à des opérations d'écriture disque. Une requête travaille essentiellement en mémoire, sauf au cas ou la quantité de données à manipuler dépasse la RAM disponible ce qui entrainera des opérations de disque.
Entre le disque et la RAM l'écart de vitesse est de :
RAM : quelques nanosecondes en temps d'accès
Disque : quelques millisecondes
différence : 10-9 / 10-3 = 1 000 000 (un million de fois plus rapide).
En pratique plus de 1000
A +
-
Grand Merci pour cette info ! Bonne journée à toi
-
Je rajoute une petite question dessus.
Dans le cas où, à partir d'une table de X milliers de lignes je n'ai besoin que de quelques centaines. Je vais ensuite avoir besoin de croiser ces données dans par exemples 5 requêtes, est ce qu'il est préférable de repartir de ma table de base et la filtrer 5 fois dans mes 5 requêtes, où vaut-il mieux créer une table temp contenant les quelques centaines de lignes pour ensuite n'interroger que celles-ci ?
-
jamais de table temp si possible... En revanche indexer les colonnes recherchées, jointes....
A +
-