パフォーマンスはどのようにSQLite3 REGEXP演算子ですか?私はEXPLAIN
からの出力を比較して理解しようとしている単一の列pattern
とインデックスSQLite3正規表現のパフォーマンス
CREATE TABLE `foobar` (`pattern` TEXT);
CREATE UNIQUE INDEX `foobar_index` ON `foobar`(`pattern`);
と
SELECT * FROM `foobar` WHERE `pattern` REGEXP 'foo.*'
のようなクエリを持つ単純なテーブルを想定して簡単にするために
、およびそれはLIKE
を使用するのと似ているようですが、マッチのためにregexpを使用する点が異なります。しかし、私はEXPLAIN
からの出力をどのように読むべきかは十分には分かっていないし、パフォーマンスがどのようになるのか把握できていない。
インデックス付きのWHERE `pattern` = 'foo'
クエリと比較して遅くなることは理解していますが、それはLIKE
と遅くなりますか?
私が正しく理解していれば、regexpはテーブル全体をスキャンし、 'regexp(pattern、 'foo。*')'を呼び出して一致するものを見つけますか? – ext
正しい。 'EXPLAIN QUERY PLAN'でそれを見ることもできます。 – redneb