SQL Server – 関数 Trim と LTRIM(RTRIM) のパフォーマンス比較

SQL Server Performance Tuning Practical Workshop の実施中に、関数 Trim と LTRIM/RTRIM のパフォーマンス比較に関する質問を受けました。

  • SQL SERVER – 文字列の先頭と末尾のスペースを削除する TRIM 関数 – 60秒でわかる SQL #040 – 動画
  • SQL SERVER – 2008 – 拡張 TRIM() 関数 – 末尾スペース、先頭スペース、ホワイトスペース、タブを削除。 キャリッジリターン、ラインフィード
  • SQL SERVER – 2008 – TRIM()関数 – ユーザー定義関数
  • SQL SERVER – TRIM()関数 – UDF TRIM()
  • SQL SERVER – 2017 – TRIM関数でリーディングスペースとトレーリングスペースを削除するにはどうすればよいですか?
  • SQL SERVER – TRIM関数のパフォーマンス観察

さて、私たちはLTRIM / TRIMと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

で新たに導入されたTRIM関数のパフォーマンスを比較する簡単な例から始めましょう、テスト中に、我々はLTRIM / TRIMと同様にTRIM関数を使用して2ケースで3 select文を持っています。 WHERE句で関数を使用していないselect文と同じパフォーマンスを比較してみましょう。

SQL Server - Trim 関数と LTRIM(RTRIM) trimperf のパフォーマンス比較

SQL Server - Trim 関数と LTRIM(RTRIM) trimperf のパフォーマンス比較

もし WHERE 句で使用する列で何らかの関数を使用したらパフォーマンスが悪くなることは明らかでしょう。