私は現在、最大のものが10,000行以上あるテーブルがほとんどないsqlite dbを持っています。この表には、ID、用語、定義、カテゴリの4つの列があります。私はFTS3モジュールを使って検索のスピードアップを図りました。しかし、今、テーブルから '次の'または '前の'行をフェッチしようとすると、FTS3を使用する前よりも時間がかかります。Android:SQLite FTS3は次/前の行をフェッチするときに遅くなります
これは私が仮想テーブルを作成する方法である:
CREATE VIRTUAL TABLE profanity USING fts3(_id integer primary key,name text,definition text,category text);
これは私が次/前の行をフェッチする方法である:
SELECT * FROM dictionary WHERE _id < "+id + " ORDER BY _id DESC LIMIT 1
SELECT * FROM dictionary WHERE _id > "+id + " ORDER BY _id LIMIT 1
私は仮想テーブルの上にこれらのステートメントを実行すると:
- NEXT用語は〜300ms以内、
- 前期は、私は通常のテーブル(FTS3せずに作成したもの)でそれを行うと〜200msの
内フェッチです:
- 次期〜3msの、 内フェッチされます
- 前期は〜2msのなぜそこ
以内にフェッチされますそんなに大きな違いはありますか?このスピードを改善できる方法はありますか?
編集済み:
まだ動作しません。
お返事ありがとうございます。私はすでにあなたが言ったことを試しています(最初にIDを減らしたり増やしたりしてデータを取得します)。改善がありますが、フィルタを追加しても機能しません(特定のカテゴリに属する用語を取りたい場合)。私はまた、FTS3のWHERE _id MATCH '10' 'が' WHERE _id = 10 'よりもはるかに高速であることを確認しました。 – Marqs