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.
|
|
|