Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme avec full outer join

3 réponses
Avatar
Ralf Meuser
Bonjour

J'ai un problème avec une requête.

ex. Table_A no_fac,no_cli,mt
Table_B no_fac,no_cli,mt

Je voudrai recupere pour un client tout les factures des 2 tables on
regroupent si existant les factures.

Ma requête est :

select a.no_fac,a.no_cli,a.mt,b.no_fac as no_fac1, b.no_cli as no_cli1,
b.mt as mt1 from table_a a full outer join table_b b on a.no_fac=
b.no_fac and a.no_cli=b.no_cli where a.no_cli=1 or b.no_cli=1

Mais cette requête prend beaucoup trop de temps.
Peut on faire mieux, surement , car je suis un peu nul en sql.

Merci d'avance

Salutations

Ralf

3 réponses

Avatar
SQLpro [MVP]
Ralf Meuser a écrit :
Bonjour

J'ai un problème avec une requête.

ex. Table_A no_fac,no_cli,mt
Table_B no_fac,no_cli,mt

Je voudrai recupere pour un client tout les factures des 2 tables on
regroupent si existant les factures.

Ma requête est :

select a.no_fac,a.no_cli,a.mt,b.no_fac as no_fac1, b.no_cli as no_cli1,
b.mt as mt1 from table_a a full outer join table_b b on a.no_fac=
b.no_fac and a.no_cli=b.no_cli where a.no_cli=1 or b.no_cli=1



Votre requête est bonne.

Y a t-il des clef primmaires et des index sur les cllefs étrangères ?

A +



Mais cette requête prend beaucoup trop de temps.
Peut on faire mieux, surement , car je suis un peu nul en sql.

Merci d'avance

Salutations

Ralf




--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Ralf Meuser
Dans les 2 tables la clé première est no_fac+no_cli et je n'ai pas lien
entre ces 2 tables.

La table_a elle grand 2760000 enrg. mais la table_b a seulement 3900 enrg.,
mais la requête dure 29 sec pour 6 lignes!

Peut on pas faire autrement pour faire plus vite ?

Merci d'avance

Ralf


"SQLpro [MVP]" a écrit dans le message de news:
eYq$
Ralf Meuser a écrit :
Bonjour

J'ai un problème avec une requête.

ex. Table_A no_fac,no_cli,mt
Table_B no_fac,no_cli,mt

Je voudrai recupere pour un client tout les factures des 2 tables on
regroupent si existant les factures.

Ma requête est :

select a.no_fac,a.no_cli,a.mt,b.no_fac as no_fac1, b.no_cli as no_cli1,
b.mt as mt1 from table_a a full outer join table_b b on a.no_fac=
b.no_fac and a.no_cli=b.no_cli where a.no_cli=1 or b.no_cli=1



Votre requête est bonne.

Y a t-il des clef primmaires et des index sur les cllefs étrangères ?

A +



Mais cette requête prend beaucoup trop de temps.
Peut on faire mieux, surement , car je suis un peu nul en sql.

Merci d'avance

Salutations

Ralf




--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************


Avatar
SQLpro [MVP]
Ralf Meuser a écrit :
Dans les 2 tables la clé première est no_fac+no_cli et je n'ai pas lien
entre ces 2 tables.

La table_a elle grand 2760000 enrg. mais la table_b a seulement 3900 enrg.,
mais la requête dure 29 sec pour 6 lignes!

Peut on pas faire autrement pour faire plus vite ?



tu fais un full outer join ce qui revient à scruter toutes les lignes
des deux tables soit : 2 760 000 + 3900 = 2 763 900 lignes... et assurer
la mise en relation.... de 6 lignes avec 2 763 900 - 6 lignes...

Sans le sens sémantique de ta requête difficile de deviner une requête
plus optimisée !

A +




Merci d'avance

Ralf


"SQLpro [MVP]" a écrit dans le message de news:
eYq$
Ralf Meuser a écrit :
Bonjour

J'ai un problème avec une requête.

ex. Table_A no_fac,no_cli,mt
Table_B no_fac,no_cli,mt

Je voudrai recupere pour un client tout les factures des 2 tables on
regroupent si existant les factures.

Ma requête est :

select a.no_fac,a.no_cli,a.mt,b.no_fac as no_fac1, b.no_cli as no_cli1,
b.mt as mt1 from table_a a full outer join table_b b on a.no_fac=
b.no_fac and a.no_cli=b.no_cli where a.no_cli=1 or b.no_cli=1


Votre requête est bonne.

Y a t-il des clef primmaires et des index sur les cllefs étrangères ?

A +


Mais cette requête prend beaucoup trop de temps.
Peut on faire mieux, surement , car je suis un peu nul en sql.

Merci d'avance

Salutations

Ralf



--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************








--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************