我有一個 160GB 的大型 SQLite 資料庫。id表的列和stage列上都有索引hwmp。
CREATE INDEX idx_hwmp_id ON hwmp (id, stage);
當我計算行數時,查詢回傳很快。只有 0.09 秒。
sqlite> select count (*) from hwmp where id = 2000 and stage = 4;
59397
Run Time: real 0.091 user 0.000074 sys 0.080494
但是,如果我全選,則實時時間非常高 - 85 秒。用戶和系統時間加起來只有 2.5 秒。那么,為什么實時要高呢?
select * from hwmp where id = 2000 and stage = 4;
Run Time: real 85.420 user 0.801639 sys 1.754250
從 SQLite 中檢索資料時似乎存在一些問題。有關如何修復它的任何提示?
更多背景關系: 我在幾天前使用的 sqlite3 資料庫(300MB)上嘗試了另一個查詢。它曾經在 20 毫秒內回傳資料。今天,它花費了 652 毫秒。
Run Time: real 0.652 user 0.018766 sys 0.010595
今天的linux環境有問題。我將相同的 sqlite 下載到我的 Mac 上,它運行得很快。
Run Time: real 0.028 user 0.005990 sys 0.010420
它正在使用索引:
sqlite> explain query plan select * from hwmp where id = 78 and stage = 4;
QUERY PLAN
`--SEARCH hwmp USING INDEX idx_hwmp_id (id=? AND stage=?)
Run Time: real 0.005 user 0.000857 sys 0.000451
uj5u.com熱心網友回復:
相關設定為pragma cache_size = 200000;200000 頁 4096 位元組。設定后,第一次查詢大約需要3s,第二次查詢需要0.28s。呸。
快取設定在一段時間內提高了性能。我們正在開發一個連接了 EBS SSD 的 AWS linux VM。環境好像也有問題。我的 Mac 中的查詢時間比 AWS linux / EBS 環境快 6.3 倍。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/457741.html
上一篇:在離開時計算不同的值
