最近、SQL で「LIKE」キーワードを使用することは推奨されないと言われました。これは本当ですか?もしそうなら、なぜですか?それが本当なら、それに代わるものはありますか?
3 に答える
その理由は主にパフォーマンスです。ただし、引数の反対側では、LIKE は標準 SQL であり、すべてのデータベースで機能するはずです。LIKE はパターン文字列を解析する必要があるため、(charindex または instr またはデータベースのお気に入りの関数を使用して) 長い文字列で部分文字列を検索するよりも少し効率が悪くなります。ただし、プロセッサは非常に高速であるため、おそらく最大のクエリを除いて、現在はほとんど違いがありません.
LIKE に関する 1 つの注意点は、join ステートメントにあります (これは代替ステートメントにも当てはまります)。一般に、データベース エンジンは結合の LIKE にインデックスを使用しません。そのため、結合句をよりインデックスに適した方法で表現できれば、パフォーマンスが大幅に向上する可能性があります。
ところで、私はSQL言語に少し慣れていて、個人的にSQL言語を使用することを避ける傾向があります. しかし、これを避ける根拠がほとんどないため、これは受け継がれるべき習慣ではありません。
特にMySQLでは(これにはMySQLタグがあるので、これを使用していると思います)、インデックスを持つ列でLIKEを使用する場合は、一致する文字列の前に%を付けないように注意する必要があります。インデックスを使用して効率的に検索する可能性がなくなるため、そうする必要はありません。そうでない場合は、LIKEを使用しても問題はありません。例えば
悪い:
col_with_index LIKE '%someText'
良い:
col_with_index LIKE 'someText%'
like!!! を使用しない正当な理由はありません。
唯一の例外は、EQUAL(=) 演算子を使用して同じ結果を得ることができる場合です (my_column LIKE 'XYZ')。
同じ結果を得るために LIKE を使用する必要がある場合、他の代替手段を使用すると、同じ (またはそれ以上の) パフォーマンスの問題が発生するはずです!
ですから、そのような場合は、like を使用する必要があるかどうかを考えて、迷わず使用してください。