私はいくつかのフィールドSQLite:LIKE 'searchstr%'はインデックスを使用する必要がありますか?
word_id — INTEGER PRIMARY_KEY
word — TEXT
...
..and〜150kの行でDBを持っています。
これは辞書なので、LIKEを使用してマスク'search_string%'
で単語を検索しています。 これはうまく動作していましたが、一致する行を見つけるのに15msを要しました。このテーブルには、フィールド'word'
のインデックスがあります。 最近、私はテーブルを修正しました(そのテーブルのいくつかのフィールドは範囲外です)何かが起きました。クエリを実行するのに400msかかるので、今はインデックスを使用できません。 likeの代わりに=を使用した簡単なクエリは、10msの結果を示します。 誰かがここで何が起こっているのか考えていますか?
私はそう思うでしょう、あなたはおそらくBツリーは範囲のクエリと比較のような効率的なので、Bツリーを見たいと思うでしょう。 – Jasonw
ええと、インデックスを作成しないで、b-treeの作成を考えていますか?つまり、自分でbツリーを作成する必要がありますか? – nikans
%は検索語の最後にのみ表示されます。 – mikel