MYSQL : Jointure externe excluant les id présents dans un table - SQL/NoSQL - Programmation
Marsh Posté le 22-07-2009 à 10:40:07
Code :
|
Marsh Posté le 22-07-2009 à 11:04:24
Harkonnen a écrit :
|
T'es sûr de toi là, ça me parait louche?
Je fais plutôt comme ça d'habitude, perso - en tout cas je trouve ça plus clair :
Code :
|
Marsh Posté le 22-07-2009 à 11:10:59
skeye a écrit : |
J'ai un peu lu le 1er post en biais, il est effectivement possible que je me sois loupé
Mais ça vaudrait le coup d'être testé quand même, ça ne me parait pas si idiot que ça
Marsh Posté le 22-07-2009 à 11:12:18
Harkonnen a écrit : |
Ta jointure sur une inégalité va pas lui retourner un quasi produit cartésien?
Marsh Posté le 22-07-2009 à 11:45:24
Salut
Merci pour vos réponses rapides.
Alors la 1er "solution" proposer par le tueur d'Atréides ( Harkonnen ) ne marchait pas.
Celle proposer par skeye marche ( après modification de 'po_f_if' en 'po_f_id' )
J'ai bien des valeurs retournées. La table an_partenaire_autorise est vide à leur actuelle donc je reviendrai conclure après le peuplement de cette dernière.
Sinon, laquelle de ces deux requêtes vous semble la plus performante ?
Merci a+
Marsh Posté le 22-07-2009 à 11:50:34
scalapb a écrit : Sinon, laquelle de ces deux requêtes vous semble la plus performante ? |
Lesquelles? La tienne et la mienne, ou celle qui marche pas et la mienne?
Marsh Posté le 22-07-2009 à 13:35:45
tu prends celle de skeye et tu fous un index sur les critères de jointure
En tout cas niveau performances je suis pas sûr de celle d'harko
Marsh Posté le 22-07-2009 à 14:22:38
Au niveau des performances je parlais des requêtes fonctionnelles, donc de la mienne et de celle de skeye.
po_pa_id et po_f_id étaient déjà indexé car je savais de base qu'ils pouvaient servir
critères de jointure ou de liaison.
Mais on pouvais également étendre la question au cas générale et sans notion du SGBD utilisé :
Une requête imbriquée est elle plus performante qu'une requête avec jointure externe ?
En tout cas, grand merci
a+
Marsh Posté le 22-07-2009 à 14:24:33
En général la jointure est censée être plus performante...
Marsh Posté le 22-07-2009 à 10:31:49
Bonjour,
N'étant pas trop fort voir assez faible en jointure externe,
je me demandais s'il était possible de passer par ce mécanisme pour faire l'équivalent de la requête suivante :
SELECT pa_id, pa_libel
FROM an_partenaire
WHERE pa_id not in ( SELECT po_pa_id FROM an_partenaire_autorise WHERE po_f_id = %s )
order by pa_libel ;
J'ai essayé cela mais du coup pas de clause sur le po_f_id (mais cela marche) :
SELECT pa_id, pa_libel
FROM an_partenaire
left join an_partenaire_autorise on pa_id = po_pa_id
WHERE po_pa_id is null
order by pa_libel ;
En essayant d'inclure la clause sur le po_f_id, la requête ne marche plus et ne me renvoie rien :
SELECT pa_id, pa_libel
FROM an_partenaire
left join an_partenaire_autorise on pa_id = po_pa_id
WHERE po_pa_id is null and po_f_id = %s
order by pa_libel ;
Est il possible de passer par une jointure externe pour remplacer ma requête imbriquée?
Est-ce que les jointures externes sont plus performantes en terme de ressources processeurs ? de ressources mémoires ?
Merci
A+