Pour améliorer des performances des requêtes, je cherche le meilleur de
faire comprendre à l'optimiseur de requête que je suis ... pressé !!!
Donc, faut-il préférer les clauses JOIN ou WHERE
SELECT table1.column1,
table2.column2
FROM table1 INNER JOIN table2
ON table1.pk_t1_id = table1.fk_t2_id
OU
SELECT table1.column1,
table2.column2
FROM table1, table2
WHERE table1.pk_t1_id = table1.fk_t2_id
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Christian Robert
Bonjour,
Aucune différences les 2 sont vues comme des jointures par le moteur.
Par contre banissez la 2ème pour des questions de lisibilité du code SQL.
-- Cordialement
Christian Robert Consultant - Formateur chez Winwise MCT - MCDBA - MCSD MCTS & MCITP SQL Server 2005
"Gislain" a écrit :
Bonjour,
Pour améliorer des performances des requêtes, je cherche le meilleur de faire comprendre à l'optimiseur de requête que je suis ... pressé !!! Donc, faut-il préférer les clauses JOIN ou WHERE
SELECT table1.column1, table2.column2 FROM table1 INNER JOIN table2 ON table1.pk_t1_id = table1.fk_t2_id
OU
SELECT table1.column1, table2.column2 FROM table1, table2 WHERE table1.pk_t1_id = table1.fk_t2_id
Merci d'avance.
Gislain
Bonjour,
Aucune différences les 2 sont vues comme des jointures par le moteur.
Par contre banissez la 2ème pour des questions de lisibilité du code SQL.
--
Cordialement
Christian Robert
Consultant - Formateur chez Winwise
MCT - MCDBA - MCSD
MCTS & MCITP SQL Server 2005
"Gislain" a écrit :
Bonjour,
Pour améliorer des performances des requêtes, je cherche le meilleur de
faire comprendre à l'optimiseur de requête que je suis ... pressé !!!
Donc, faut-il préférer les clauses JOIN ou WHERE
SELECT table1.column1,
table2.column2
FROM table1 INNER JOIN table2
ON table1.pk_t1_id = table1.fk_t2_id
OU
SELECT table1.column1,
table2.column2
FROM table1, table2
WHERE table1.pk_t1_id = table1.fk_t2_id
Aucune différences les 2 sont vues comme des jointures par le moteur.
Par contre banissez la 2ème pour des questions de lisibilité du code SQL.
-- Cordialement
Christian Robert Consultant - Formateur chez Winwise MCT - MCDBA - MCSD MCTS & MCITP SQL Server 2005
"Gislain" a écrit :
Bonjour,
Pour améliorer des performances des requêtes, je cherche le meilleur de faire comprendre à l'optimiseur de requête que je suis ... pressé !!! Donc, faut-il préférer les clauses JOIN ou WHERE
SELECT table1.column1, table2.column2 FROM table1 INNER JOIN table2 ON table1.pk_t1_id = table1.fk_t2_id
OU
SELECT table1.column1, table2.column2 FROM table1, table2 WHERE table1.pk_t1_id = table1.fk_t2_id
Merci d'avance.
Gislain
Gislain
Bonjour et merci,
Mais n'y a t'il pas des cas (sur des requêtes plus complmexes) où le WHERE est moins performant ?
Merci.
Gislain
"Christian Robert" (sansspam)> wrote in message news:
Bonjour,
Aucune différences les 2 sont vues comme des jointures par le moteur.
Par contre banissez la 2ème pour des questions de lisibilité du code SQL.
-- Cordialement
Christian Robert Consultant - Formateur chez Winwise MCT - MCDBA - MCSD MCTS & MCITP SQL Server 2005
"Gislain" a écrit :
Bonjour,
Pour améliorer des performances des requêtes, je cherche le meilleur de faire comprendre à l'optimiseur de requête que je suis ... pressé !!! Donc, faut-il préférer les clauses JOIN ou WHERE
SELECT table1.column1, table2.column2 FROM table1 INNER JOIN table2 ON table1.pk_t1_id = table1.fk_t2_id
OU
SELECT table1.column1, table2.column2 FROM table1, table2 WHERE table1.pk_t1_id = table1.fk_t2_id
Merci d'avance.
Gislain
Bonjour et merci,
Mais n'y a t'il pas des cas (sur des requêtes plus complmexes) où le WHERE
est moins performant ?
Merci.
Gislain
"Christian Robert" <christian.robert@winwise.fr (sansspam)> wrote in message
news:DF175D26-4554-41F4-85C8-BC3ADBB2C133@microsoft.com...
Bonjour,
Aucune différences les 2 sont vues comme des jointures par le moteur.
Par contre banissez la 2ème pour des questions de lisibilité du code SQL.
--
Cordialement
Christian Robert
Consultant - Formateur chez Winwise
MCT - MCDBA - MCSD
MCTS & MCITP SQL Server 2005
"Gislain" a écrit :
Bonjour,
Pour améliorer des performances des requêtes, je cherche le meilleur de
faire comprendre à l'optimiseur de requête que je suis ... pressé !!!
Donc, faut-il préférer les clauses JOIN ou WHERE
SELECT table1.column1,
table2.column2
FROM table1 INNER JOIN table2
ON table1.pk_t1_id = table1.fk_t2_id
OU
SELECT table1.column1,
table2.column2
FROM table1, table2
WHERE table1.pk_t1_id = table1.fk_t2_id
Mais n'y a t'il pas des cas (sur des requêtes plus complmexes) où le WHERE est moins performant ?
Merci.
Gislain
"Christian Robert" (sansspam)> wrote in message news:
Bonjour,
Aucune différences les 2 sont vues comme des jointures par le moteur.
Par contre banissez la 2ème pour des questions de lisibilité du code SQL.
-- Cordialement
Christian Robert Consultant - Formateur chez Winwise MCT - MCDBA - MCSD MCTS & MCITP SQL Server 2005
"Gislain" a écrit :
Bonjour,
Pour améliorer des performances des requêtes, je cherche le meilleur de faire comprendre à l'optimiseur de requête que je suis ... pressé !!! Donc, faut-il préférer les clauses JOIN ou WHERE
SELECT table1.column1, table2.column2 FROM table1 INNER JOIN table2 ON table1.pk_t1_id = table1.fk_t2_id
OU
SELECT table1.column1, table2.column2 FROM table1, table2 WHERE table1.pk_t1_id = table1.fk_t2_id
Merci d'avance.
Gislain
Patrice
L'origine de l'ajout du JOIN concerne je pense des ambiguïtés dans l'ordre d'évaluation des critères présents dans le where (entre ceux relevant de la jointure et ceux qui sont de "vrais" sélections) ce qui pouvait conduire à des résultats différents.
Pour l'aspect performance, le mieux est sans doute de commencer par voir concrètement le plan d'exécution choisie par SQL Server.
En plus je crois me souvenir que la syntaxe 2 est définitivement bannie dans SQL Server 2005...
-- Patrice
"Gislain" a écrit dans le message de news:
Bonjour et merci,
Mais n'y a t'il pas des cas (sur des requêtes plus complmexes) où le WHERE est moins performant ?
Merci.
Gislain
"Christian Robert" (sansspam)> wrote in message news:
Bonjour,
Aucune différences les 2 sont vues comme des jointures par le moteur.
Par contre banissez la 2ème pour des questions de lisibilité du code SQL.
-- Cordialement
Christian Robert Consultant - Formateur chez Winwise MCT - MCDBA - MCSD MCTS & MCITP SQL Server 2005
"Gislain" a écrit :
Bonjour,
Pour améliorer des performances des requêtes, je cherche le meilleur de faire comprendre à l'optimiseur de requête que je suis ... pressé !!! Donc, faut-il préférer les clauses JOIN ou WHERE
SELECT table1.column1, table2.column2 FROM table1 INNER JOIN table2 ON table1.pk_t1_id = table1.fk_t2_id
OU
SELECT table1.column1, table2.column2 FROM table1, table2 WHERE table1.pk_t1_id = table1.fk_t2_id
Merci d'avance.
Gislain
L'origine de l'ajout du JOIN concerne je pense des ambiguïtés dans l'ordre
d'évaluation des critères présents dans le where (entre ceux relevant de la
jointure et ceux qui sont de "vrais" sélections) ce qui pouvait conduire à
des résultats différents.
Pour l'aspect performance, le mieux est sans doute de commencer par voir
concrètement le plan d'exécution choisie par SQL Server.
En plus je crois me souvenir que la syntaxe 2 est définitivement bannie dans
SQL Server 2005...
--
Patrice
"Gislain" <nospam@nospam.com> a écrit dans le message de news:
eY0U8E8iGHA.3496@TK2MSFTNGP02.phx.gbl...
Bonjour et merci,
Mais n'y a t'il pas des cas (sur des requêtes plus complmexes) où le WHERE
est moins performant ?
Merci.
Gislain
"Christian Robert" <christian.robert@winwise.fr (sansspam)> wrote in
message news:DF175D26-4554-41F4-85C8-BC3ADBB2C133@microsoft.com...
Bonjour,
Aucune différences les 2 sont vues comme des jointures par le moteur.
Par contre banissez la 2ème pour des questions de lisibilité du code SQL.
--
Cordialement
Christian Robert
Consultant - Formateur chez Winwise
MCT - MCDBA - MCSD
MCTS & MCITP SQL Server 2005
"Gislain" a écrit :
Bonjour,
Pour améliorer des performances des requêtes, je cherche le meilleur de
faire comprendre à l'optimiseur de requête que je suis ... pressé !!!
Donc, faut-il préférer les clauses JOIN ou WHERE
SELECT table1.column1,
table2.column2
FROM table1 INNER JOIN table2
ON table1.pk_t1_id = table1.fk_t2_id
OU
SELECT table1.column1,
table2.column2
FROM table1, table2
WHERE table1.pk_t1_id = table1.fk_t2_id
L'origine de l'ajout du JOIN concerne je pense des ambiguïtés dans l'ordre d'évaluation des critères présents dans le where (entre ceux relevant de la jointure et ceux qui sont de "vrais" sélections) ce qui pouvait conduire à des résultats différents.
Pour l'aspect performance, le mieux est sans doute de commencer par voir concrètement le plan d'exécution choisie par SQL Server.
En plus je crois me souvenir que la syntaxe 2 est définitivement bannie dans SQL Server 2005...
-- Patrice
"Gislain" a écrit dans le message de news:
Bonjour et merci,
Mais n'y a t'il pas des cas (sur des requêtes plus complmexes) où le WHERE est moins performant ?
Merci.
Gislain
"Christian Robert" (sansspam)> wrote in message news:
Bonjour,
Aucune différences les 2 sont vues comme des jointures par le moteur.
Par contre banissez la 2ème pour des questions de lisibilité du code SQL.
-- Cordialement
Christian Robert Consultant - Formateur chez Winwise MCT - MCDBA - MCSD MCTS & MCITP SQL Server 2005
"Gislain" a écrit :
Bonjour,
Pour améliorer des performances des requêtes, je cherche le meilleur de faire comprendre à l'optimiseur de requête que je suis ... pressé !!! Donc, faut-il préférer les clauses JOIN ou WHERE
SELECT table1.column1, table2.column2 FROM table1 INNER JOIN table2 ON table1.pk_t1_id = table1.fk_t2_id
OU
SELECT table1.column1, table2.column2 FROM table1, table2 WHERE table1.pk_t1_id = table1.fk_t2_id
Merci d'avance.
Gislain
SQLpro [MVP]
Gislain a écrit :
Bonjour,
Pour améliorer des performances des requêtes, je cherche le meilleur de faire comprendre à l'optimiseur de requête que je suis ... pressé !!! Donc, faut-il préférer les clauses JOIN ou WHERE
SELECT table1.column1, table2.column2 FROM table1 INNER JOIN table2 ON table1.pk_t1_id = table1.fk_t2_id
OU
SELECT table1.column1, table2.column2 FROM table1, table2 WHERE table1.pk_t1_id = table1.fk_t2_id
Merci d'avance.
Gislain
1) la réalisation du plan de calcul est plus rapide en général avec des JOIN qu'avec des jointures noyées dans la clause WHERE 2) la syntaxe JOIN est la norme depuis 1992 3) les jointures externes dans le WHERE (*=) ne produisent pas les mêmes résultats que dans les OUTER JOIN 4) la syntaxe des jointures externe *= n'est plus supportée dans SQL Server 2005. Elle a commencé à être déconseillée dans l'aide en ligne de MS SQL Server 7.
mais en ce qui concerne les plans de requêtes ils devraient être identiques
A +
-- 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 ***********************
Gislain a écrit :
Bonjour,
Pour améliorer des performances des requêtes, je cherche le meilleur de
faire comprendre à l'optimiseur de requête que je suis ... pressé !!!
Donc, faut-il préférer les clauses JOIN ou WHERE
SELECT table1.column1,
table2.column2
FROM table1 INNER JOIN table2
ON table1.pk_t1_id = table1.fk_t2_id
OU
SELECT table1.column1,
table2.column2
FROM table1, table2
WHERE table1.pk_t1_id = table1.fk_t2_id
Merci d'avance.
Gislain
1) la réalisation du plan de calcul est plus rapide en général avec des
JOIN qu'avec des jointures noyées dans la clause WHERE
2) la syntaxe JOIN est la norme depuis 1992
3) les jointures externes dans le WHERE (*=) ne produisent pas les mêmes
résultats que dans les OUTER JOIN
4) la syntaxe des jointures externe *= n'est plus supportée dans SQL
Server 2005. Elle a commencé à être déconseillée dans l'aide en ligne de
MS SQL Server 7.
mais en ce qui concerne les plans de requêtes ils devraient être identiques
A +
--
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 ***********************
Pour améliorer des performances des requêtes, je cherche le meilleur de faire comprendre à l'optimiseur de requête que je suis ... pressé !!! Donc, faut-il préférer les clauses JOIN ou WHERE
SELECT table1.column1, table2.column2 FROM table1 INNER JOIN table2 ON table1.pk_t1_id = table1.fk_t2_id
OU
SELECT table1.column1, table2.column2 FROM table1, table2 WHERE table1.pk_t1_id = table1.fk_t2_id
Merci d'avance.
Gislain
1) la réalisation du plan de calcul est plus rapide en général avec des JOIN qu'avec des jointures noyées dans la clause WHERE 2) la syntaxe JOIN est la norme depuis 1992 3) les jointures externes dans le WHERE (*=) ne produisent pas les mêmes résultats que dans les OUTER JOIN 4) la syntaxe des jointures externe *= n'est plus supportée dans SQL Server 2005. Elle a commencé à être déconseillée dans l'aide en ligne de MS SQL Server 7.
mais en ce qui concerne les plans de requêtes ils devraient être identiques
A +
-- 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 ***********************