0

次のスキーマを持つテーブルがあります。

ID、firstName、MiddleName、LastName、FML、[他のいくつかの列]

FML列は、firstName、スペース文字、MiddleName、スペース文字、および姓を連結して作成されます。FMLを知っているときにpersongを検索したいです。したがって、私のクエリは

SELECT * from tbl where FML LIKE @Param

しかし、私はこのクエリを最適化したいので、入力文字列をfirstName、MiddleName、LastName文字列に分割して、そのようなクエリを作成することを考えています。

SELECT * FROM tbl where firstName like @FN and MiddleName like @MN and LastName like @ln. 

また、クエリします

SELECT smth from tbl where Val='test'

パフォーマンスの面で優れている

Select smth from tbl where Val like 'test'

ありがとうございました。

4

2 に答える 2

1

=を意味する場合は、=を使用します。あなたが好きを意味するなら、それから好きを使ってください。ただし、likeにワイルドカードを追加すると、パフォーマンスが低下します。

別々のフィールドで分離してフィルタリングすることにより、柔軟性は失われますが、検索をより具体的にする能力が高まります。したがって、機能が異なるため、それ自体は最適化されていません。

ジャック・ロバーツとロバート・ジャックの2つのレコードがあると想像してください。

最初のクエリでは、クエリが'%Robert%'の場合に両方を見つけることができますが、2番目のクエリでは別々のクエリでそれらを見つけることができます。

于 2012-08-23T08:56:56.407 に答える
0

はい、「=」演算子は最高のパフォーマンスを提供しますが、LIKE は値に test を含むすべての Val を検索します。

于 2012-08-23T09:03:00.370 に答える