2010-06-30 5 views
0

J'ai un problème avec une requête générée par Mondrian OLAP Server. ça prend trop de temps. la requête ressemble à ceci.Optimisation de requête

select "TABLE1"."column0" as "c0" from "FACT_TABLE" as "FACT_TABLE", 
"TABLE7" as "TABLE7", 
"TABLE6" as "TABLE6", 
"TABLE5" as "TABLE5", 
"TABLE4" as "TABLE4", 
"TABLE4" as "TABLE3", 
"TABLE2" as "TABLE2", 
"TABLE1" as "TABLE2" 
where "FACT_TABLE"."column1" = 'VALUE' and 
"FACT_TABLE"."column2" =0 and 
"FACT_TABLE"."column3" = 0 and 
"TABLE2"."table1Fk" = "TABLE1"."table1Id" and 
"TABLE3"."table2Fk" = "TABLE2"."table2Id" and 
"TABLE4"."table3Fk" = "TABLE3"."table3Id" and 
"TABLE5"."table4Fk" = "TABLE4"."table4Id" and 
"TABLE6"."table5Fk" = "TABLE5"."table5Id" and 
"TABLE7"."table6Fk" = "TABLE6"."table6Id" and 
"FACT_TABLE"."table7Fk" = "TABLE7"."table7Id" 
    group by "TABLE1"."column0" 
    order by "TABLE1"."column0" ASC 

FACT_TABLE a 1,346,000 rangées aprox. TABLE7 a 895 lignes aprox. TABLE6 a 445 lignes. TABLE5 a 183 lignes. Le TABLEAU4 comporte 258 lignes. TABLEAU3 = TABLEAU4. TABLE2 a 126 lignes. TABLE1 a 29 lignes.

La requête prend environ 2,00 secondes sur l'environnement de production, et je ne sais vraiment pas quoi faire pour améliorer la performance des requêtes.

Im sur une RAM de 8 Go. intel xeon L5420 à 2.50GHZ. MSSQL 2005.

je vais aprécié toute aide que vous pouvez me donner

Répondre

0

Jetez un oeil sur le plan d'exécution. Il vous avertira s'il détecte des tables pouvant utiliser un index non cluster pour améliorer le temps de requête.

http://blogs.msdn.com/b/craigfr/archive/tags/joins/

Ce lien aide beaucoup avec l'optimisation des requêtes (et l'apprentissage d'une tonne d'autres choses.)

0

Je suppose que vous n'avez pas d'index sur vos champs clés étrangers.

Cela ne provoque pas votre problème, mais personnellement, je ne voudrais pas utiliser un outil qui crée implicitement au lieu de jointures explicites. Comment pouvez-vous faire confiance à quelque chose qui utilise une syntaxe remplacée il y a 18 ans par quelque chose de mieux?

Oh autre chose que je viens de remarquer, je ne vois pas d'agrégats, alors pourquoi regroupes-tu?

+0

Le problème est que cette syntaxe n'est pas générée par moi-même. il est généré par un autre nom appelé Mondrian qui est un serveur OLAP. je veux juste savoir comment peut améliorer cela peut-être créer les bons index ou autre chose – rfders