MySQL 列文字列の一致: INSTR と LIKE
タイプ 'varchar'、'text の MySQL 列内の部分文字列を検索する場合'、または 'blob' を使用する場合、INSTR と LIKE という 2 つの一般的な検索方法が使用されます。しかし、どちらのアプローチがより効率的でしょうか?
質問の中心は、INSTR 関数を使用して指定された文字列の位置を特定する INSTR と、ワイルドカードを使用したパターン マッチングを利用する LIKE のどちらが最適であるかという点です。
パフォーマンスの比較
ベンチマークにより、フルテーブル スキャンでは、INSTR と LIKE はどちらも同様のパフォーマンスを示します:
INSTR( columnname, 'mystring' ) > 0: 5.54 sec columnname LIKE '%mystring%': 5.54 sec
ただし、インデックス付き列でプレフィックス検索を実行する場合、重要な違いが現れます:
Name LIKE 'search%': 3.88 sec
このシナリオでは、LIKE接尾辞のワイルドカードのみを使用すると、INSTR よりも大幅にパフォーマンスが向上します。
代替: FULLTEXT Search
INSTR と LIKE は両方とも文字列の一致に役立ちますが、部分文字列の検索では FULLTEXT 検索の効率が優れていることに注意することが重要です。インデックス付きの単語リストを活用し、特に大きな列を検索する場合に超高速のパフォーマンスを実現します。速度が最優先される場合は、FULLTEXT の採用を検討してください。
以上がMySQL 文字列マッチング: INSTR と LIKE: どちらが効率的ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。