いくつかのテーブルを結合するSQLクエリがあり、結果セットの多くの列に対して同じLIKE条件を使用してレコードをフィルタリングしたいと思います。たとえば、クエリに列t1.Name、t1.FullName、t1.Comment、t2.Name、t3.Descriptionなどがあり(t1、t2、t3は結合されたテーブル名です)、t1.Nameかどうかを確認したいと思います。またはt1.FullNameまたはt1.Commentまたはt2.Nameまたはt3.DescriptionはLIKE'%sometext%'です。どのSQLがより高速になるのか興味がありますか?
WHERE t1.FullName LIKE '%sometext%' OR t1.Comment LIKE '%sometext%' OR
t2.Name LIKE '%sometext%' OR t3.Description LIKE '%sometext%'
また
WHERE ISNULL(t1.Name,'') + '|' + ISNULL(t1.FullName,'') + '|' + ISNULL(t1.Comment,'') + '|' + ISNULL(t2.Name,'') + '|' + ISNULL(t3.Description,'') LIKE '%sometext%'
それとももっと速い方法があるのでしょうか?MS SQL Server2008R2を使用しています。
UPD: 2番目のクエリを編集して、一部のフィールドがNULLであり、連結にパターンが含まれている可能性があるが、フィールドが個別に含まれていない状況を処理しました。