Tijdens het geven van de SQL Server Performance Tuning Practical Workshop kreeg ik onlangs een vraag die betrekking heeft op de prestatievergelijking van de Functie Trim en LTRIM/RTRIM.
Regarding de trim-functie, heb ik eerder geblogd in de volgende blog post en ik verzoek u om hetzelfde te lezen voordat u verder gaat met de demonstratie van deze blog.
- SQL SERVER – TRIM Functie voor het verwijderen van voorloop spaties en naloop spaties van String – SQL in Sixty Seconds #040 – Video
- SQL SERVER – 2008 – Verbeterde TRIM() Functie – Verwijder naloop spaties, voorloop spaties, witruimte, tabs, Carriage Returns, Line Feeds
- SQL SERVER – 2008 – TRIM() Functie – User-Defined Functie
- SQL SERVER – TRIM() Functie – UDF TRIM()
- SQL SERVER – 2017 – Hoe voorloop- en naloopspaties verwijderen met TRIM Functie?
- SQL SERVER – Prestatie Observatie van TRIM Functie
Nee laten we beginnen met een eenvoudig voorbeeld waar we de prestaties van LTRIM/RTRIM met TRIM functie die nieuw is ingevoerd in 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
Nu tijdens de test, hebben we drie select statement waarin de twee gevallen gebruiken we LTRIM/RTRIM en TRIM functie. Laten we de prestaties van dezelfde vergelijken met de select-instructie waarin we geen functie in de WHERE-clausule hebben gebruikt.
Het is heel duidelijk dat als we een functie gebruiken voor de kolom die wordt gebruikt in de WHERE-clausule, de prestaties slecht zullen zijn.