
Apr 1, 2022
JavaScript Spread and Rest Operators: When To, Why To, and How to Use Them
Understand two of the most useful JavaScript features
Le saviez-vous ? Le choix de l'ordre du tri a un incidence sur les performance du tri

Le choix des champs pour l’ordre de tri est important dans une requête SQL.
Prennez par exemple la requête suivante :
SELECT *FROM `ma_table_a` aINNER JOIN `ma_table_b` b ON (a.`aid` = b.`aid`)ORDER BY b.`aid` DESCEn plaçant un index sur le champ b.aid, celui-ci sera utilisé dans la requête, et celle-ci sera très rapide.
En réalité, ce n’est pas le cas. L’utilisation de cet index n’est absolument pas bon et vous allez probablement autant de temps à executer la requête que s’il n’y en avait pas.
Dans ce genre de requête, vous avez le tri qui est executé à la fin de la requête, juste avant le renvoi des données.
Le tri est executé sur une table temporaire qui ne contient pas d’index, et donc pas celui de la table ma_table_b.
Si l’on choisit un index de la première table ma_table_a, celle de la close FROM, le tri sera effectué avant la jointure, et l’on peut ainsi bénéficier totalement de l’index de la table placé sur aid :
SELECT *FROM `ma_table_a` aINNER JOIN `ma_table_b` b ON (a.`aid` = b.`aid`)ORDER BY a.`aid` DESCSur ce problème, en changeant la close ORDER BY par celle de la première table, je passe d’une requête de plus de 5 secondes… à 10ms.