Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1036 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] optimisation de requête....

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] optimisation de requête....

n°466873
liengy
Approuved !!!
Posté le 24-07-2003 à 14:40:54  profilanswer
 

Tout est dans le sujet :
 
 


SELECT COR_ID_ZONE, COR_SOCIETE, COR_IDSERVICE, COR_CATEGORIE,
       COR_DEBUT_DATE_EFFET, COR_VALEUR, COR_ID_OPERATEUR
  FROM CORRECTIF
 WHERE COR_DEBUT_DATE_EFFET < SYSDATE
   AND COR_ID_ZONE = 9
   AND COR_SOCIETE = '147'
   AND COR_IDSERVICE = '1'
   AND COR_CATEGORIE = 'F76'
   AND COR_STATUT = 1
   AND COR_DEBUT_DATE_EFFET = (
         SELECT MAX(COR_DEBUT_DATE_EFFET)
     FROM CORRECTIF
    WHERE COR_ID_ZONE = 9
      AND COR_SOCIETE = '147'
      AND COR_IDSERVICE = '1'
      AND COR_CATEGORIE = 'F76'
      AND COR_STATUT = 1
         )
 

mood
Publicité
Posté le 24-07-2003 à 14:40:54  profilanswer
 

n°466930
Lord II
PIB2000
Posté le 24-07-2003 à 15:09:15  profilanswer
 

liengy a écrit :

Tout est dans le sujet :


 
A mon avis mais c'est que mon avis ( en mssql , après tu adaptes)

Code :
  1. SELECT TOP 1 COR_ID_ZONE, COR_SOCIETE, COR_IDSERVICE, COR_CATEGORIE,
  2.       COR_DEBUT_DATE_EFFET, COR_VALEUR, COR_ID_OPERATEUR
  3. FROM CORRECTIF
  4. WHERE COR_DEBUT_DATE_EFFET < SYSDATE
  5.   AND COR_ID_ZONE = 9
  6.   AND COR_SOCIETE = '147'
  7.   AND COR_IDSERVICE = '1'
  8.   AND COR_CATEGORIE = 'F76'
  9.   AND COR_STATUT = 1
  10.   ORDER BY COR_DEBUT_DATE_EFFET DESC


Message édité par Lord II le 24-07-2003 à 15:09:38

---------------
La bave du crapaud n'empèche pas la caravane de passer .
n°466978
liengy
Approuved !!!
Posté le 24-07-2003 à 15:35:13  profilanswer
 

Lord II a écrit :


 
A mon avis mais c'est que mon avis ( en mssql , après tu adaptes)

Code :
  1. SELECT TOP 1 COR_ID_ZONE, COR_SOCIETE, COR_IDSERVICE, COR_CATEGORIE,
  2.       COR_DEBUT_DATE_EFFET, COR_VALEUR, COR_ID_OPERATEUR
  3. FROM CORRECTIF
  4. WHERE COR_DEBUT_DATE_EFFET < SYSDATE
  5.   AND COR_ID_ZONE = 9
  6.   AND COR_SOCIETE = '147'
  7.   AND COR_IDSERVICE = '1'
  8.   AND COR_CATEGORIE = 'F76'
  9.   AND COR_STATUT = 1
  10.   ORDER BY COR_DEBUT_DATE_EFFET DESC

 

Je ne connaissais pas le coup du "top 1"... C intéressant, mais ça n'a pas l'air de fonctionner en oracle...

n°467002
Lord II
PIB2000
Posté le 24-07-2003 à 15:46:17  profilanswer
 

j'ai dit qu'il faudrait adapter. perso je ne peux t'aider mais tu dois pouvoir trouver ca dans la doc oracle


---------------
La bave du crapaud n'empèche pas la caravane de passer .
n°467112
MagicBuzz
Posté le 24-07-2003 à 17:30:22  profilanswer
 

avec oracle, c'est "where rownum < 1"
 
ou numrow, chais jamais :D

n°467119
tomlameche
Et pourquoi pas ?
Posté le 24-07-2003 à 17:37:36  profilanswer
 

MagicBuzz a écrit :

avec oracle, c'est "where rownum < 1"
 
ou numrow, chais jamais :D


rownum < 2  :o


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
n°467158
liengy
Approuved !!!
Posté le 24-07-2003 à 18:16:50  profilanswer
 

Merci à vous 3....
 
et matière d'optimisation en temps, vous en pensez quoi entre les 2 ?????

n°467193
MagicBuzz
Posté le 24-07-2003 à 19:20:39  profilanswer
 

arf, oui, je voulais dire <= :D

n°467205
Lord II
PIB2000
Posté le 24-07-2003 à 20:02:46  profilanswer
 

liengy a écrit :

Merci à vous 3....
 
et matière d'optimisation en temps, vous en pensez quoi entre les 2 ?????


 
ma version ne possède qu'une seule requete !!! :sol:


---------------
La bave du crapaud n'empèche pas la caravane de passer .
n°467436
liengy
Approuved !!!
Posté le 25-07-2003 à 10:11:59  profilanswer
 

Lord II a écrit :


 
ma version ne possède qu'une seule requete !!! :sol:  

Oui mais c une seule requête avec un tri + une sélection sur le 1° résultat...
 
Est-ce réellement plus rapide que la sélection d'un max, puis une requête triviale ???
 
Je suis d'accord sur l'optimisation d'écriture, et donc de compréhension... Mais en temsp d'exécution ?

mood
Publicité
Posté le 25-07-2003 à 10:11:59  profilanswer
 

n°467584
tomlameche
Et pourquoi pas ?
Posté le 25-07-2003 à 11:36:16  profilanswer
 

liengy a écrit :

Oui mais c une seule requête avec un tri + une sélection sur le 1° résultat...
 
Est-ce réellement plus rapide que la sélection d'un max, puis une requête triviale ???
 
Je suis d'accord sur l'optimisation d'écriture, et donc de compréhension... Mais en temsp d'exécution ?


conserve ta requete de départ, car sous Oracle, le coup du top 1 ne marchera pas : en effet, lorsque tu utilise rownum, il l'utilise avant de faire le ORDER BY, donc ca marchera pas ! Et puis je trouve ça plus lisible en fait, mais c'est subjectif ...

n°469316
MagicBuzz
Posté le 27-07-2003 à 23:29:27  profilanswer
 

Suffit de faire le order dans la requête, puis une requête autour portant sur le rownum :)
 
Sinon, le problème du max, c'est qu'il oblige à faire une requête avec des regroupements, ce qui est très consomateur.

n°483701
toto666
May the force be with you
Posté le 11-08-2003 à 16:00:52  profilanswer
 

Sinon, on peut faire la recherche du maximum dans une premiere requete en stockant le resultat dans un variable puis la seconde requete qui ne sert qu'a afficher le resultat.
 
L'interet est de ne pas avoir les 2 requetes en memoire au meme moment.
Ca optimise pas trop en soit, mais sa doit faciliter le travail de l'optimisateur d'oracle.

n°483959
MagicBuzz
Posté le 11-08-2003 à 19:28:34  profilanswer
 

toto666 a écrit :

Sinon, on peut faire la recherche du maximum dans une premiere requete en stockant le resultat dans un variable puis la seconde requete qui ne sert qu'a afficher le resultat.
 
L'interet est de ne pas avoir les 2 requetes en memoire au meme moment.
Ca optimise pas trop en soit, mais sa doit faciliter le travail de l'optimisateur d'oracle.


Au contraire, c'est plus lent (pas énormément, mais tout de même)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] optimisation de requête....

 

Sujets relatifs
Transformer/Intégrer un XLS dans une base SQL/mySQLrecuperer une valeur d une requete sql pour l utiliser ds un chemin
Requete SQL : Suis je nulle ???[SQL] requete pour extraire une partie de la chain de de resultat
ASP : L'opération doit utiliser une requête qui peut être mise à jour[SQL] Temps d'execution d'une requete bizarre
[SQL] requete (optimisation toute simple help!!!!) 
Plus de sujets relatifs à : [SQL] optimisation de requête....


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR