La requête suivante (V_TITRATION_RESULTS
) est une vue utilise un pivot ligne à la colonne qui retourne environ 20 000 lignes:Tuning lignes à Col. requêtes
SELECT test.created_on as "Created On",
r_titr as "Titrator",
r_fact as "Factor"
FROM (SELECT test_id,
MAX(CASE WHEN result_tmpl_id = 2484 THEN result END) r_titr,
MAX(CASE WHEN result_tmpl_id = 2483 THEN result END) r_fact
FROM (SELECT lims.test.*
FROM lims.test
WHERE test_tmpl_id = 867)
JOIN lims.result USING (test_id)
GROUP BY test_id)
JOIN lims.test test USING (test_id)
Je voudrais lancer une recherche sur la vue de retourner seulement les essais depuis le début de Septembre:
SELECT * FROM V_TITRATION_RESULTS WHERE "Created On" > DATE '2009-09-01'
le « GET regimes » tant pour la vue et requête filtrée sont identiques, et les statistiques de traces (ci-dessous) pour les deux requêtes sont similaires indiquant les lignes ne sont pas filtrées avant ils ont tous été traités.
VIEW Filtered Diff
Physical Reads 81730 83946 2216
Logical Reads 364488 344063 -20425
Sort Rows 632194 632193 -1
ROWID Gets 580778 580778 0
Chained Gets 101823 101823 0
Memory (kB) 307 324 17
Scan Rows 3 3 0
Scan Gets 3 3 0
Sorts In Mem 4 4 0
Temp Segments 1 1 0
Scan Short 3 3 0
CPU Total (sec) 8.13 7.3 -0.83
First Row 2m 12s 2m 40s
Last Row 18s 0s
Comment puis-je réécrire mon avis afin qu'une condition WHERE
filtrera les tests avant le pivot ligne à la colonne?
Quelle version d'Oracle? –