HomeHomeTechniqueTechniqueDéveloppement S...Développement S...Pb avec la clause TOPPb avec la clause TOP
Précédente
 
Suivante
Nouveau message
18/05/2009 19:19
 

Bonjour à tous,

Je viens de tomber sur un pb ... que j'ai résolu en bricolant. Si quelqu'un a une solution plus "professionel" je suis preneur.

Une clause TOP (n) est beaucoup + longue qu'une clause TOP (n) PERCENT !! En tous cas sur ma requete (voir + bas). J'ai donc été obligé de faire en sorte de calculer le pourcentage du nombre que je souhaite retourner...

En regardant un peu les plans d'executions entre les 2 requetes je me suis aperçu que sur le TOP PERCENT il parrallélisent  les sous requête, sur le TOP "nb de ligne" ce n'est pas le cas.

Ma config : SQL Server 2008 dev edtion 32 bit . 4Go RAM

Merci d'avance pour vos retours.

 Franck

Voici une requete qui met environs 5 sec

SELECT TOP (10)  200764, ID
FROM ANONYM.dbo.vBASE_ANONYM
  WHERE   (TERRITOIRE IN (SELECT VAL1
       FROM REQUETE_FILTRE_VALEUR
      WHERE N_REQUETE_FILTRE=1865 AND COMMENTAIRE='TERRITOIRE')
        OR
    REGION IN (SELECT VAL1
      FROM REQUETE_FILTRE_VALEUR
                           WHERE N_REQUETE_FILTRE=1865 AND COMMENTAIRE='REGION')
   )

 la même mais avec un TOP en pourcentage .... moins d'une seconde

 SELECT TOP (0.088)  200764, ID
FROM ANONYM.dbo.vBASE_ANONYM
  WHERE   (TERRITOIRE IN (SELECT VAL1
       FROM REQUETE_FILTRE_VALEUR
      WHERE N_REQUETE_FILTRE=1865 AND COMMENTAIRE='TERRITOIRE')
        OR
    REGION IN (SELECT VAL1
      FROM REQUETE_FILTRE_VALEUR
                           WHERE N_REQUETE_FILTRE=1865 AND COMMENTAIRE='REGION')
   )

 
Nouveau message
20/06/2009 10:29
 

Pour forcer le niveau de paralèllisation :

MAXDOP

 

Bruno Reiter

 

Franck Servant Roumey a dit

Bonjour à tous,

Je viens de tomber sur un pb ... que j'ai résolu en bricolant. Si quelqu'un a une solution plus "professionel" je suis preneur.

Une clause TOP (n) est beaucoup + longue qu'une clause TOP (n) PERCENT !! En tous cas sur ma requete (voir + bas). J'ai donc été obligé de faire en sorte de calculer le pourcentage du nombre que je souhaite retourner...

En regardant un peu les plans d'executions entre les 2 requetes je me suis aperçu que sur le TOP PERCENT il parrallélisent  les sous requête, sur le TOP "nb de ligne" ce n'est pas le cas.

Ma config : SQL Server 2008 dev edtion 32 bit . 4Go RAM

Merci d'avance pour vos retours.

 Franck

Voici une requete qui met environs 5 sec

SELECT TOP (10)  200764, ID
FROM ANONYM.dbo.vBASE_ANONYM
  WHERE   (TERRITOIRE IN (SELECT VAL1
       FROM REQUETE_FILTRE_VALEUR
      WHERE N_REQUETE_FILTRE=1865 AND COMMENTAIRE='TERRITOIRE')
        OR
    REGION IN (SELECT VAL1
      FROM REQUETE_FILTRE_VALEUR
                           WHERE N_REQUETE_FILTRE=1865 AND COMMENTAIRE='REGION')
   )

 la même mais avec un TOP en pourcentage .... moins d'une seconde

 SELECT TOP (0.088)  200764, ID
FROM ANONYM.dbo.vBASE_ANONYM
  WHERE   (TERRITOIRE IN (SELECT VAL1
       FROM REQUETE_FILTRE_VALEUR
      WHERE N_REQUETE_FILTRE=1865 AND COMMENTAIRE='TERRITOIRE')
        OR
    REGION IN (SELECT VAL1
      FROM REQUETE_FILTRE_VALEUR
                           WHERE N_REQUETE_FILTRE=1865 AND COMMENTAIRE='REGION')
   )

 
Précédente
 
Suivante
HomeHomeTechniqueTechniqueDéveloppement S...Développement S...Pb avec la clause TOPPb avec la clause TOP