Nous avons un problème de performances avec notre configuration SQL Server 2012 Enterprise que je ne peux pas expliquer et j'espère que vous avez une idée.Problème de performances SQL Server 2012
Nous avons une table de faits avec un groupe de colonnes int que nous regroupons ainsi qu'une table de dimension de région.
C'est la structure de notre table fait:
- regionId (int)
- revenus (Décimal 10,2)
- orderIntake (décimal 10,2)
Et Voici la structure de notre tableau de dimensions:
- worldR ÉGION (varchar (100) 9
- grappe (varchar (100))
- pays (varchar (100))
- regionId (int)
La table de faits et la table de dimension sont reliés par l'intermédiaire une INNER JOIN sur les colonnes regionId. La performance de ceci est assez bonne tant que nous ne limitons pas les pays.
E.g.
SELECT SUM(revenue) FROM factTable f INNER JOIN regionDim r ON f.regionId=r.regionId
est rapide (< 1 sec).
Cependant
SELECT SUM(revenue) FROM factTable f INNER JOIN regionDim r ON f.regionId=r.regionId WHERE r.country IN ('France','Germany')
est assez lent (> 8 sec) pour environ 500k enregistrements.
Nous avons les indizes suivantes en place:
- columnstore Index sur la table de fait sur la colonne regionId
- index cluster sur la table de dimension (regionId, pays, cluster, worldRegion)
Y a-t-il quelque chose que nous pouvons changer d'un point de vue de l'index ou de la structure globale?
Avez-vous regardez le plan de requête? Que dit-il des index utilisés? – cdoubleplusgood