2009-09-10 8 views
0

La requête suivante fonctionne comme prévu. Mais je suppose qu'il y a assez de place pour l'optimisation. De l'aide?Optimiser les jointures à droite

SELECT a.cond_providentid, 
     b.flag1 
FROM  c_master a 
WHERE a.cond_status = 'OnService' 
ORDER BY a.cond_providentid, 
     a.rto_number; 
+0

Pourquoi utilisez-vous SUM() '? 'SUM (1 | 0)' peut être écrit sans 'SUM()';) – knittl

+2

16 questions et vous n'obtiendrez pas de réponses? Non merci ... –

+0

Si vous utilisez bien rejoindre, vous ne méritez pas une réponse ... je plaisante –

Répondre

2

Je vous suggère de placer la requête au sein de votre gauche se joindre à une vue de base de données - de cette façon, le code peut être beaucoup plus propre et plus facile à entretenir.

En outre, vérifiez les colonnes que vous utilisez le plus souvent .. il pourrait être un candidat pour l'indexation de sorte que lorsque vous exécutez votre requête, il peut être plus rapide.

Vous pouvez également vérifier vos types de données de colonne ... Je vois que vous avez ce type de code:

(CAS QUAND b.tray_type IS NULL ALORS 1 0 ELSE FIN) flag2

Si vous avez une chance de changer la conception de vos tables, (iebTray_Type à peu, ou utiliser une colonne calculée pour déterminer le drapeau), il courir plus vite parce que vous ne devez pas utiliser des déclarations de cas pour déterminer le drapeau. Vous pouvez simplement l'ajouter comme une autre colonne pour votre requête.

Espérons que cela aide! :)

Ann

+0

+1 pour vos efforts – Natrium

Questions connexes