Bonjour,

Voilà, j'ai une grosse table d'une base de données dans un groupe de disponibilité Aways ON
La table est partitionnées par semaine et une semaine a environ 40 millions de lignes.
La table possède 2 colonnes [Jour_bebut], [Jour_fin] définissant l’intervalle de jours où une ligne est applicable:

[Jour_bebut], [Jour_fin] = (1,15) la ligne est applicable pour les jours 1,2...15
Les jours possibles sont de 1 à 400 enregistrés dans une table de référence:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 TableRef (Jour int not null)
Je veux faire une SUM ... GROUP BY pour avoir les valeurs par jour possible (non par intervalle ) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 
SELECT t.Jour,t.semaine,r.col1,r.col2...,SUM(r.val)
FROM TableBase t
INNER JOIN TableRef r ON r.Jour BETWEEN t.Jour_debut AND t.Jour_fin
AND t.semaine = 202123 /* une seule semaine pour tester */
GROUP BY t.Jour,t.semaine,r.col1,r.col2...
La jointure génère environ 7 milliards de lignes.... et la requête échoue à cause de problème d'espace :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Msg 1101, Level 17, State 166, Line 52
Could not allocate a new page for database 'TEMPDB' because of insufficient disk space in filegroup 'DEFAULT'. Create the necessary space ....
Quelqu'un a t-il une astuce pour ce genre de requêtes avec ces volumétries ?

D'avance Merci