2016-08-09 11 views
0

私は、2つの列を次の文字列と比較するwhere節を持っています。この連結はすべての行に対して実行されますか?この文字列(および連結)を2回残すか、結果を保持する変数を作成してWHERE句で使用する必要がありますか?WHERE句の定数値のベストプラクティス?

CONCAT('%', @myVar, 'dr')

+1

SQL ServerまたはSybase? – jarlh

+0

SQLサーバの場合は、次のように試してみてください。 'DECLARE @var char(200); SET @var = CONCAT( '%'、@ myVar、 'dr'); 'を呼び出し、where句で@varを使用します。 – Grace

+1

' LIKE'は連結よりも高価になります。 –

答えて

1

にそれを使用する変数を作成します。テーブルには2つのnvarchar(50)の列、つまりfirstnamefullnameがあります。

enter image description here

は、私ははっきりと見ることができる私はわざと入れ句は、SQL Serverエンジンが両方compute scalar手順については、0%のコストを示しているところでさえための3つのAND条件。連結式の個別の変数を作成するか、where句にインラインで置くかにかかわらず、何の違いも生じないという事実ははっきりしています。

0

結果を保持し、私は私のデータベースに存在するテストテーブルであなたの表現のための実行計画を確認WHERE句