SQL – L’ordre de WHERE est-il important?

Supposons que category_id est une clé d’index (pas de clé primaire) des classeurs. Y a-t-il une différence entre les deux instructions SQL suivantes?

 SELECT * FROM books WHERE author='Bill' AND category_id=1 SELECT * FROM books WHERE category_id=1 AND author='Bill' 

Je suppose que filtrer les enregistrements d’abord par category_id et ensuite par author 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?

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

L’optimiseur passe en revue la requête et détermine le meilleur moyen d’obtenir les données basées sur des index et autres. Même s’il y avait un index de couverture sur les colonnes category_id et author, l’un ou l’autre satisferait aux critères pour l’utiliser (en supposant qu’il n’y ait pas quelque chose de mieux).

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 les limites du raisonnable et du “coût” qui serait hors sujet).

Alors qu’en général, non, cela suppose que vous utilisez une firebase database moderne. Il y a peut-être dix ans, cela comptait certainement.

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