par
pierreC » 19 déc. 2008, 14:46
je peux vous coller une requête réel mais ca risque de vous surprendre :
SELECT sum(civilite='M') , sum(civilite='MLLE') , sum(civilite='MME'), sum(civilite='NR') ,
,sum(code_region='23'),sum(code_region='24') ,sum(code_region='25'), NORMANDIE', sum(code_region='26'), sum(code_region='31')
WHERE couplage_global IN ('CAN','CPL','CSA') OR ( anc_an > 25 AND ancien < 5 )
J'ai donc constaté que dans ce genre de requete, si je n'ai pas de WHERE et que les champs (civilite et code_region) dans le select son indexé, les calculs vont TRES vite, mais des qu'il y a un WHERE, les index ne sont plus utilisé.
et pour info c'est une toute petite requete. En prod le select comportera une centaine de sum() concernant une vingtaine de variable. Le where comprendra entre 1 et 15 conditions
je peux vous coller une requête réel mais ca risque de vous surprendre :
[quote]
SELECT sum(civilite='M') , sum(civilite='MLLE') , sum(civilite='MME'), sum(civilite='NR') ,
,sum(code_region='23'),sum(code_region='24') ,sum(code_region='25'), NORMANDIE', sum(code_region='26'), sum(code_region='31')
WHERE couplage_global IN ('CAN','CPL','CSA') OR ( anc_an > 25 AND ancien < 5 )
[/quote]
J'ai donc constaté que dans ce genre de requete, si je n'ai pas de WHERE et que les champs (civilite et code_region) dans le select son indexé, les calculs vont TRES vite, mais des qu'il y a un WHERE, les index ne sont plus utilisé.
et pour info c'est une toute petite requete. En prod le select comportera une centaine de sum() concernant une vingtaine de variable. Le where comprendra entre 1 et 15 conditions