回答:
パフォーマンスの違いを確認するには、次のことを試してください。
SELECT count(*)
FROM master..sysobjects as A
JOIN tempdb..sysobjects as B
on A.name = B.name
SELECT count(*)
FROM master..sysobjects as A
JOIN tempdb..sysobjects as B
on A.name LIKE B.name
文字列と「=」を比較すると、はるかに高速です。
Postgresが文字列マッチングのために提供する他のいくつかのトリックがあります(それがたまたまDBである場合)。
ILIKE。大文字と小文字を区別しないLIKE一致です。
select * from people where name ilike 'JOHN'
一致:
そして、本当に怒りたいなら、正規表現を使うことができます:
select * from people where name ~ 'John.*'
一致:
前と同じように、 '='演算子はTransact-SQLで文字列にスペースを埋め込みます。したがって、'abc' = 'abc '
trueを返します。'abc' LIKE 'abc '
falseを返します。ほとんどの場合 '='は正しいでしょうが、最近の私の場合はそうではありませんでした。
したがって、「=」の方が高速ですが、LIKEは意図をより明確に示す場合があります。
LIKE
パターンマッチングに=
使用され、同等性テストCOLLATION
に使用されます(使用中によって定義されます)。
=
インデックスを使用できますが、LIKE
クエリでは通常、結果セットのすべてのレコードをテストしてそれを除外する必要があるため(フルテキスト検索を使用している場合を除く)、=
パフォーマンスが向上します。