我有一個sqlite數據庫,目前有幾個表中最大的一個擁有超過10,000行。此表有四列:id,術語,定義,類別。我使用了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
當我運行在虛擬表中的這些語句:
- 下一個字段取自〜300ms,
- 上一屆是內取〜200ms的
當我與普通表(沒有FTS3創建的)做到這一點:
- 下學期的內〜3ms的取,
- 上期是取之內〜2ms的
爲什麼會出現是一個很大的區別?有什麼辦法可以提高這個速度嗎?
編輯:
我仍然無法使它工作!
感謝您的迴應。我已經嘗試了你所說的(首先減少/增加id,然後通過它獲取數據),並且有改進,但是如果我將添加過濾器(如果我想獲取屬於特定類別的術語),它將不起作用。我也發現用FTS3'WHERE _id MATCH'10''比'WHERE _id = 10'快很多。 – Marqs