我有一個正常的SQLite數據庫表,名爲table1,有7列,當然還有一個rowid。第一列是一個custom_id號碼,第二列是格式爲YYYY-MM-DD的日期,其他5個是實數數據列。數據庫中有大約10M行,而custom_id和日期列有索引。如何加快日期GROUP BY的SQL查詢?
我想要做的是加快下面的查詢:
SELECT date,max(data1) AS maximum
FROM table1
WHERE custom_id = '1123' AND data1 <> 'NaN'
GROUP BY strftime('%Y-%m', date)
我想找到的最大正確(不是NAN)DATA1值的custom_id 1123年各月的組合。上面的代碼工作得很好,但查詢在第一次運行中持續10秒,但第二次運行時間在1秒以內,這對我來說沒問題。我使用PHP在我的家用PC Apache服務器上運行查詢。我認爲Apache使用一些緩存來解釋差異。
但問題是,如何加快第一次運行性能?我有很多其他的custom_id:s來查詢,並不是所有的都可以被緩存!我需要更多的索引嗎?另一種查詢?
? –
@GordonLinoff - 'date'(d-a-t-e)和'data1'(d-a-t-a),它是一個數值。 –
@GordonLinoff我有日期和5個數據列data1,data2,data3,data4和data5。我是否必須爲每個數據列創建5個索引? table1(custom_id,data1),table1(custom_id,data2)...這將大大增加文件大小。目前文件大小約爲900兆字節。如果我不得不使用更多的索引,我不想超過2千兆字節。 – Laotse