Î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.
Este foarte clar că, dacă folosim orice funcție pe coloana utilizată în clauza WHERE, suntem obligați să obținem performanțe slabe.