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

  FORUM HardWare.fr
  Programmation

  sql-ORACLE8: Le savez-vous ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

sql-ORACLE8: Le savez-vous ?

n°25118
wouatouwou​atou
Posté le 17-04-2001 à 11:23:13  profilanswer
 

si on utilise des index ... est-ce plus performant de regrouper les conditions d'une meme table (dans la clause where) que de les mettre arbitrairement ?
Moi je pensais ke mettre un where du genre:
t1.c1=t2.c1 and t2.c2=t3.c2 and t1.c3=t2.c3
 
etait equilvalent a :
t1.c1=t2.c1 and t1.c3=t2.c3 and t2.c2=t3.c2

 

[edit]--Message édité par wouatouwouatou--[/edit]


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
mood
Publicité
Posté le 17-04-2001 à 11:23:13  profilanswer
 

n°25121
instantdha​rma
Ailleurs c'est ici
Posté le 17-04-2001 à 11:31:10  profilanswer
 

Slt
Je pense pas qu'on puisse établir une règle générale à cer sujet. Tout dépend de l'optimiseur de reqs du SGBD que tu utilises


---------------
di. / www.diredaredare.org - Ailes de la ville
n°25123
instantdha​rma
Ailleurs c'est ici
Posté le 17-04-2001 à 11:31:58  profilanswer
 

P.S. en fait, ta question n'est pas une question sql...


---------------
di. / www.diredaredare.org - Ailes de la ville
n°25128
instantdha​rma
Ailleurs c'est ici
Posté le 17-04-2001 à 11:36:40  profilanswer
 

Désolé pour mes éluKubrations hors sujet ; le sujet s'set pas affiché correctement sur mon écran


---------------
di. / www.diredaredare.org - Ailes de la ville
n°25133
BENB
100% Lux.
Posté le 17-04-2001 à 11:42:20  profilanswer
 

instantdharma a écrit a écrit :

Slt
Je pense pas qu'on puisse établir une règle générale à cer sujet. Tout dépend de l'optimiseur de reqs du SGBD que tu utilises




Au contraire je pense que c'est valable pour tout SGBD...
En effet dans la deuxieeme proposition la condition trois est la seule a utiliser la table t3 donc ne pas l'evaluer fais gagner du temps or il n'y besoin de l'evaluer que si les deux premieres sont vraies...
Les conditions sont tres rarement optimisees a causes des differences et/ou...

n°25145
jupiler
Un cousin...
Posté le 17-04-2001 à 11:54:39  profilanswer
 

la position relative des jointures et des conditions sur
un meme table a de l'importance, mais faut de l'expérience
pour savoir comment optimiser


---------------
Je ne suis ni pour, ni contre, bien au contraire  
n°25146
wouatouwou​atou
Posté le 17-04-2001 à 11:54:41  profilanswer
 

instantdharma a écrit a écrit :

Désolé pour mes éluKubrations hors sujet ; le sujet s'set pas affiché correctement sur mon écran




 
Non.. non... C'est moi ki ai reédité le tôpic sur tes conseils...
:D
 
Si j'ai bien compris, en fait, il fo regrouper par table alors ?
Les conditions s'effectuent séquentiellement ? Et si oui, même pour le 'OR' ?

 

[edit]--Message édité par wouatouwouatou--[/edit]


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
n°25147
wouatouwou​atou
Posté le 17-04-2001 à 11:56:20  profilanswer
 

kel en sont les gains ? au nivo perfs.
gagne ton bcp?


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
n°25148
instantdha​rma
Ailleurs c'est ici
Posté le 17-04-2001 à 11:57:59  profilanswer
 

Pas sûr.
Exemple :
Soient 3 tables : t1,t2,t3.
Les 3 tables contiennent une colonne maFK, une clé étrangère (indexée).
pour accéder aux 3 tables, il suffit d'écrire
where t2.maFK = t1.maFK
  and t3.maFK = t2.maFK
 
La clause additionnelle and t1.maFK = t3.maFK est redondante ; En sybase sql server, il est conseillé d'ajouter la 3e jointure dans la req, de sorte que l'optimiseur de reqs étudie tous les chemins et trouve une meilleure solution pour renvoyer le result set.


---------------
di. / www.diredaredare.org - Ailes de la ville
n°25166
thegti
La constipation se soigne ...
Posté le 17-04-2001 à 12:13:35  profilanswer
 

Salut
 
En règle générale,
SQL travaillant par balayage des tables, on doit mettre la condition la plus discrimante en premier et ainsi de suite
De plus l'utilisation de sous requêtes avant les jointures peut permettre de gagner un temps d'éxecution appréciable.
 
Mais tout ca tu l'a vu en Maitrise d'Info, les espèces d'arbres de requêtes ca te dit rien ?
 
a+

mood
Publicité
Posté le 17-04-2001 à 12:13:35  profilanswer
 

n°25173
wouatouwou​atou
Posté le 17-04-2001 à 12:38:04  profilanswer
 

ouais.. bien sûr, bien sûr...Evidemment ke je l'ai vu!!! :D
Mais de loin... très loin... d'autant plus loin ke la salle etait grande :D:D
 
kentends-tu par la plus discriminante? un chtit exemple pliz :jap:
 
Et est-ce ke ca change kkchose ke d'ecrire:
t1.c1=t2.c1
en
t2.c1=t1.c1 ?
 
 
thegti> toi ki est specialiste de sql.. tu pourrais pas vérifier ma requete de l'autre topic et me l'optimiser plzzzz :D
P.S: au fait, tu rentres a kel heure ce soir ?

 

[edit]--Message édité par wouatouwouatou--[/edit]


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
n°25180
thegti
La constipation se soigne ...
Posté le 17-04-2001 à 13:08:35  profilanswer
 

Discriminante = qui en enlève le plus
 
Exemple:
Qui est né le '25/05/1980' et joue au football professionnellement ?
 
SELECT P.NOM, P.PRENOM
FROM PERSONNE P, TRAVAIL T
WHERE P.IDPER=T.IDPER  
AND T.JOB='Football'
AND P.DATENAISSANCE='25/05/1980'
 
La c'est pas optimisé du tout
 
Y'a vachement plus de joueurs de foot que de personnes né le 25/05/1980
La condition T.JOB='Football' est moins discriminante que la condition P.DATENAISSANCE='25/05/1980'
Donc:
SELECT P.NOM, P.PRENOM
FROM PERSONNE P, TRAVAIL T
WHERE P.IDPER=T.IDPER  
AND P.DATENAISSANCE='25/05/1980'
AND T.JOB='Football'
 
De plus ca dépend aussi des indexs, si JOB est indexé et DATENAISSANCE pas alors la première solution peut être la plus rapide, mais ca dépend aussi du nombre de lignes
 
On peut même aller plus loin dans l'optimisation (en évitant les jointures initules)
SELECT P.NOM, P.PRENOM
FROM  
(SELECT P.IDPER, P.NOM, P.PRENOM
 FROM PERSONNE P
 WHERE P.DATENAISSANCE='25/05/1980') TMP1,
(SELECT T.IDPER
 FROM TRAVAIL T
 T.JOB='Football') TMP2
WHERE TMP1.IDPER=TMP2.IDPER  
Mais bon, là ca bouffe de la mémoire et c'est pas forcément plus rapide, car le SGBD gère assez bien la cohabitation entre les jointures et les conditions car il travaille sur les indexs (s'ils existent bien sûr)
 
De plus je me suis penché sur la question qu'en Access, un petit SGBD quoi, et je pense que SQLServer ou Oracle doit gérer certaines optimisations tout seul
 
a+

n°25187
krolours1
Posté le 17-04-2001 à 13:33:05  profilanswer
 

Dans Oracle, fais un "explain plan" sur ta requête tu pourra voir les causes de lenteur.

n°25190
wouatouwou​atou
Posté le 17-04-2001 à 13:37:01  profilanswer
 

ouhla... C koi ke ce explain plan??
C ou ke je dois taper ca?
Moi jutilise toad... et sqlplus (l'interpreteur par defaut koi)
jai aussi sqlLab.. mais celui la, jsais encore moins lutiliser ke les deux autres :D


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
n°25282
wouatouwou​atou
Posté le 17-04-2001 à 16:36:42  profilanswer
 

up :(


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
n°25311
instantdha​rma
Ailleurs c'est ici
Posté le 17-04-2001 à 17:40:24  profilanswer
 

Je connais pas Oracle mais explain plan, ça doit être une commande qui permet d'obtenir le plan d'exécution de tes requêtes


---------------
di. / www.diredaredare.org - Ailes de la ville
n°25315
ddr555
Posté le 17-04-2001 à 17:54:35  profilanswer
 

C'est ilisible pour les débutants un explain plan ( même pour les confirmés, surtout quand y'a beaucoup de tables )
le mieux est de chercher en retouchant la requete et mesurant les temps de réponse à l'aide de set timing on. par expérience, je sais bien que les sgbd ne trouvent pas forcément la meilleure optimisation, ça c'est surtout vrai avec sql server ( 7.0 ).


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

  sql-ORACLE8: Le savez-vous ?

 

Sujets relatifs
java:acces a une db (oracle8) 
Plus de sujets relatifs à : sql-ORACLE8: Le savez-vous ?


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