90 votes

SQL - L’ordre des conditions WHERE est-il important ?

Supposons qu’il s’agisse d’une clé d’index (et non d’une clé primaire) de la table. Y a-t-il une différence entre les deux instructions SQL suivantes ?

Je suppose que filtrer les enregistrements d’abord par et ensuite par est plus rapide que de les filtrer dans l’ordre inverse. Les moteurs SQL sont-ils assez intelligents pour le faire de cette façon ?

86voto

OMG Ponies Points 144785

Non, l’ordre des clauses WHERE n’a pas d’importance.

L’optimiseur examine la requête et détermine les meilleurs moyens d’obtenir les données en fonction des index et autres. Même s’il y avait un index de couverture sur les colonnes category_id et auteur - l’un ou l’autre satisferait aux critères pour l’utiliser (en supposant qu’il n’y ait pas quelque chose de mieux).

13voto

gbn Points 197263

SQL est déclaratif.

Dans votre exemple, vous avez dit au moteur/optimiseur ce que vous voulez... il va maintenant trouver la meilleure façon de le faire (dans la limite du raisonnable et du « coût », ce qui serait hors sujet).

8voto

Dean J Points 10987

Alors qu’en général, non, cela suppose que vous utilisez une base de données moderne. Peut-être qu’il y a dix ans, c’était certainement important à l’époque.

2voto

ajdams Points 1739

En bref, non, ils n’ont pas d’importance car l’optimiseur déterminera le meilleur moyen de récupérer les données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X