Syntaxe SQL performante

Pour inclure une table dans une requête, utilisez l’instruction JOIN (dans la clause FROM ) plutôt qu’une sous-requête dans la clause WHERE . Ce conseil est valable même si vous souhaitez utiliser les données de la table à des fins de filtrage, pas dans le jeu de résultats.

Il est plus efficace d’effectuer une jointure de plusieurs tables dans la clause FROM que d’utiliser une sous-requête dans la clause WHERE .

Evitez les instructions SQL qui ne tirent pas parti des index. Il s’agit d’instructions utilisant des fonctions agrégées dans une sous-requête, d’une instruction UNION dans une sous-requête ou d’une clause ORDER BY conjuguée à une instruction UNION .

Un index peut grandement accélérer le traitement d’une requête SELECT . Certaines syntaxes SQL, cependant, empêchent la base de données d’exploiter les index, la forçant à effectuer les opérations de recherche et de tri sur les données elles-mêmes.

Dans la mesure du possible, évitez l’opérateur LIKE , surtout avec un caractère générique à gauche, comme dans LIKE('%XXXX%') .

L’opérateur LIKE prend en charge les recherches par caractères génériques. Il est donc plus lent que les comparaisons exactes. En particulier, si la chaîne de recherche commence par un caractère générique, la base de données ne peut absolument pas utiliser les index dans la recherche. Elle est obligée d’examiner tout le texte de chaque ligne de la table.

Dans la mesure du possible, évitez l’opérateur IN . Si vous connaissez d’avance les valeurs possibles, il est possible de remplacer l’opérateur IN par AND ou OR pour accélérer l’exécution.

La seconde des deux instructions suivantes s’exécute plus vite, car elle utilise des expressions d’égalité simples conjuguées à OR , et non les instructions IN() ou NOT IN() :

-- Slower 
SELECT lastName, firstName, salary 
FROM main.employees 
WHERE salary IN (2000, 2500) 
     
-- Faster 
SELECT lastName, firstName, salary 
FROM main.employees 
WHERE salary = 2000 
    OR salary = 2500
Envisagez d’utiliser d’autres formes d’une instruction SQL pour améliorer les performances.

Comme illustré dans les exemples précédents, la syntaxe d’une instruction SQL peut affecter les performances de la base de données. Il existe souvent plusieurs manières d’écrire une instruction SQL SELECT pour récupérer un jeu de résultats particulier. Une technique s’exécutera parfois sensiblement plus vite qu’une autre. Outre les suggestions précédentes, vous trouverez des informations supplémentaires sur les différentes instructions SQL et leurs performances dans les ressources dédiées du langage SQL.