|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : octobre 2009 Messages : 8 ![]() |
Bonjour,
je travail sur les DW et j'aimerai bien estimer le coût de certain type de requêtes ( en nombre E/S). par exemple, si on a deux relations R1,R2 R1(ID,Nom) et R2(IDcmd,DateDeCommande,Client) comment on estime le coût de cette requête sachant que la jointure est une hash join : Code :
Merci |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() |
1) Vous devriez utiliser la syntaxe normalisée pour les jointures depuis 1992.
2) En SQL, les valeurs textuelles s'écrivent entre apostrophes et pas entre guillemets. 3) 3) Il est préférable de préfixer les colonnes du nom -ou mieux, de l'alias quand le nom de la table est plus long que dans votre exemple - afin de lever toute ambiguïté sur la provenance de ces colonnes. 4) Dans votre WHERE, pour faites figurer une table Client qui s'appelle en réalité R1 dans le FROM et dans votre message. ![]() Code :
Puis il fera la jointure entre les deux tables en utilisant l'index de la clé étrangère posé sur R2.Client et ne parcourra donc que le nombre de lignes correspondant à l'ID du client dans la table R2. Je ne sais pas si ça répond partiellement à la question sur le calcul de la jointure par hachage dont je ne connais pas le mécanisme particulier. À moins que je sois M. Jourdain en ce domaine ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
||
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : octobre 2009 Messages : 8 ![]() |
Merci pour la réponce et les corrections
oui effectivement, j'ai tester le oracle et le plan d'exécution montre qu'il fait une lecture (full) de la table R1 et une sélection et projection coté R2 de (IDcmd,Client) du client 'Dupond' qui produira une table R2'. après il effectuera une jointure (Hash join) entre la table R1 et R2' donc moi,d'essai de calculer le coût total (en nombre E/S): Code :
coût_requête = ( 2*|R1| + |R2|+ |R2'| ) + (|R1| + |R2'| ) Est se que c'est juste ou pas ! merci pour votre aide |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com