當涉及到具有日期範圍的SQLite查詢時,我遇到了巨大的性能問題。Android SQLite快速搜索日期
在我的應用程序中,我有一個數據庫,有成千上萬的網站記錄。這些網站是可見的,但不是整年。每個站點都可以定義最多三個可以訪問的範圍。因此,我創建了以下的列的SQLite表:open1,close1,open2,close2,open3和close3(主要)
應用的用戶可以輸入一個時間範圍,其中他們想訪問一個網站,例如2014.01.01 - 2014.01.07
現在,當我在不限制時間的情況下執行搜索時,速度相當快。 但是,當我使用開放時間作爲搜索標準時,搜索在快速模擬器上最多需要7秒。我甚至不希望測試這個真實的設備:)
在列開放和密切是類型DATETIME的條目上,看起來像:2014年1月1日
我當前的查詢如下:
SELECT open1,close1,open2,close2,open3,close3 FROM sites WHERE (
((strftime('%Y-%m-%d', '2014-01-01') BETWEEN open1 AND close1) AND (strftime('%Y-%m-%d', '2014-01-07') BETWEEN open1 AND close1))
OR
((strftime('%Y-%m-%d', '2014-01-01') BETWEEN open2 AND close2) AND (strftime('%Y-%m-%d', '2014-01-07') BETWEEN open2 AND close2))
OR
((strftime('%Y-%m-%d', '2014-01-01') BETWEEN open3 AND close3) AND (strftime('%Y-%m-%d', '2014-01-07') BETWEEN open3 AND close3))
)
是否有提高性能的簡單方法?
注意:我試着在長格式使用UTC值開放和接近但這不是真正的可調試。
在此先感謝您的幫助!
沒有調試的,特別是與索引 – njzk2
所以你說我應該使用*長*而不是? – grAPPfruit
我會的,是的。它使得更簡單的請求更容易優化(更容易查看要創建的索引) – njzk2