我不確定以下查詢有什么問題。
對于提供的names大小/長度更大的陣列,查詢似乎運行得很慢(可能呈指數級緩慢,不確定):
以下是用于的列mytable:
name, timestamp, diff, diff2, ratio, minus_one
minus_onecolumn 只是一個輔助列,-1對于每個插入的行,它總是有一個值。
有人可以幫助優化查詢嗎?或者你認為它好嗎?也許應該優化我代碼的其他部分以更快地運行它?任何建議都非常感謝。
詢問:
SELECT
COUNT(diff) AS count,
IFNULL(AVG(diff), 0) AS avg,
IFNULL(MAX(diff), 0) AS max,
IFNULL(MIN(diff), 0) AS min
FROM
mytable
WHERE
name IN :names
AND timestamp >= :start
AND timestamp <= :end
AND ratio <> -1
AND (minus_one = :ratioStart OR ratio >= :ratioStart)
AND (minus_one = :ratioEnd OR ratio <= :ratioEnd)
AND (minus_one = :diffStart OR diff >= :diffStart)
AND (minus_one = :diffEnd OR diff <= :diffEnd)
AND (minus_one = :diffStart2 OR diff2 >= :diffStart2)
AND (minus_one = :diffEnd2 OR diff2 <= :diffEnd2)
GROUP BY
name
ORDER BY
count DESC
uj5u.com熱心網友回復:
那是因為 where 子句需要更多的時間來查詢。您可以通過執行以下操作之一來改進查詢:
使用多列索引:
CREATE INDEX index_name ON table(col1, col2);使用sqflite插件
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/362193.html
下一篇:如何在顫振中實作滑動類別欄?
