SQL Server – Leistungsvergleich zwischen der Funktion Trim und LTRIM(RTRIM)

Bei der Durchführung des praktischen SQL Server Performance Tuning Workshops habe ich kürzlich eine Frage erhalten, die sich auf den Leistungsvergleich zwischen der Funktion Trim und LTRIM/RTRIM bezieht.

Bezüglich der Funktion Trim habe ich zuvor im folgenden Blogbeitrag geschrieben und ich bitte Sie, diesen zu lesen, bevor Sie mit der Demonstration in diesem Blog fortfahren.

  • SQL SERVER – TRIM Function to Remove Leading and Trailing Spaces of String – SQL in Sixty Seconds #040 – Video
  • SQL SERVER – 2008 – Enhanced TRIM() Function – Remove Trailing Spaces, Leading Spaces, White Space, Tabs, Carriage Returns, Line Feeds
  • SQL SERVER – 2008 – TRIM() Funktion – Benutzerdefinierte Funktion
  • SQL SERVER – TRIM() Funktion – UDF TRIM()
  • SQL SERVER – 2017 – Wie entfernt man führende und nachgestellte Leerzeichen mit der TRIM Funktion?
  • SQL SERVER – Leistungsbeobachtung der TRIM-Funktion

Lassen Sie uns mit einem einfachen Beispiel beginnen, in dem wir die Leistung von LTRIM/RTRIM mit der TRIM-Funktion vergleichen, die neu in SQL Server eingeführt wurde

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

Während des Tests haben wir nun drei Select-Anweisungen, wobei wir in beiden Fällen sowohl LTRIM/RTRIM als auch die TRIM-Funktion verwenden. Vergleichen wir die Leistung derselben mit der Select-Anweisung, bei der wir keine Funktion in der WHERE-Klausel verwendet haben.

SQL Server - Leistungsvergleich der Funktion Trim und LTRIM(RTRIM) trimperf

SQL Server - Leistungsvergleich der Funktion Trim und LTRIM(RTRIM) trimperf

Es ist ganz klar, dass wir eine schlechte Leistung erhalten, wenn wir eine Funktion für die in der WHERE-Klausel verwendete Spalte verwenden.