En animant l’atelier pratique d’optimisation des performances de SQL Server, j’ai récemment reçu une question qui est liée à la comparaison des performances de la fonction Trim et LTRIM/RTRIM.
En ce qui concerne la fonction trim, j’ai précédemment blogué dans le billet suivant et je vous demande de lire le même avant de poursuivre la démonstration à partir de ce blog.
- SQL SERVER – Fonction TRIM pour supprimer les espaces de début et de fin de chaîne – SQL en soixante secondes #040 – Vidéo
- SQL SERVER – 2008 – Fonction TRIM() améliorée – Suppression des espaces de fin, des espaces de début, des espaces blancs, des tabulations, retours chariot, sauts de ligne
- SQL SERVER – 2008 – Fonction TRIM() – Fonction définie par l’utilisateur
- SQL SERVER – Fonction TRIM() – UDF TRIM()
- SQL SERVER – 2017 – Comment supprimer les espaces de début et de fin avec la fonction TRIM ?
- SQL SERVER – Observation des performances de la fonction TRIM
Nous allons commencer par un exemple simple où nous allons comparer les performances de LTRIM/RTRIM avec la fonction TRIM qui est nouvellement introduite dans SQL Server
-- Create a sample tableCREATE TABLE Test (ID INT, Col1 CHAR(100))GOSET NOCOUNT ONINSERT Test (ID, Col1)VALUES (1,' a ')GO 1000INSERT Test (ID, Col1)VALUES (1,' b ')GO-- Create a nonclustered indexCREATE NONCLUSTERED INDEX IX_Test_Col1 ON Test (Col1);GO-- SELECT TESTSELECT IDFROM TestWHERE LTRIM(RTRIM(Col1)) = 'b'GOSELECT IDFROM TestWHERE TRIM(Col1) = 'b'GOSELECT IDFROM TestWHERE Col1 = ' b 'GO-- cleanupDROP TABLE TestGO
Maintenant pendant le test, nous avons trois déclarations select dans lesquelles les deux cas nous utilisons LTRIM/RTRIM ainsi que la fonction TRIM. Comparons les performances de la même chose avec l’instruction select où nous n’avons utilisé aucune fonction dans la clause WHERE.
![SQL Server - Comparaison des performances de la fonction Trim et LTRIM(RTRIM) trimperf](https://blog.sqlauthority.com/wp-content/uploads/2018/05/trimperf.jpg)
Il est très clair que si nous utilisons n’importe quelle fonction sur la colonne utilisée dans la clause WHERE, nous sommes voués à obtenir de mauvaises performances.