SQL Server – Compararea performanțelor funcției Trim și LTRIM(RTRIM)

În timp ce țineam Atelierul practic de reglare a performanțelor SQL Server, am primit recent o întrebare legată de compararea performanțelor funcției Trim și LTRIM/RTRIM.

În ceea ce privește funcția Trim, am scris anterior în următoarea postare pe blog și vă rog să o citiți înainte de a continua demonstrația de pe acest blog.

  • SQL SERVER – Funcția TRIM pentru a elimina spațiile de început și de sfârșit de șir – SQL in Sixty Seconds #040 – Video
  • SQL SERVER – 2008 – Funcția TRIM() îmbunătățită – Elimină spațiile de sfârșit, spațiile de început, spațiile albe, filele, Carriage Returns, Line Feeds
  • SQL SERVER – 2008 – Funcția TRIM() – Funcție definită de utilizator
  • SQL SERVER – Funcția TRIM() – UDF TRIM()
  • SQL SERVER – 2017 – Cum se elimină spațiile de început și sfârșit cu funcția TRIM?
  • SQL SERVER – Observarea performanței funcției TRIM

Noi să începem cu un exemplu simplu în care vom compara performanța funcției LTRIM/RTRIM cu funcția TRIM care este nou introdusă în 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

Acum, în timpul testului, avem trei declarații select în care în cele două cazuri folosim LTRIM/RTRIM, precum și funcția TRIM. Să comparăm performanța acestora cu instrucțiunea select în care nu am utilizat nicio funcție în clauza WHERE.

SQL Server - Compararea performanțelor funcției Trim și LTRIM(RTRIM) trimperf

SQL Server - Compararea performanțelor funcției Trim și LTRIM(RTRIM) trimperf

Este foarte clar că, dacă folosim orice funcție pe coloana utilizată în clauza WHERE, suntem obligați să obținem performanțe slabe.