クエリにORDERBYステートメントを追加すると、非常に遅くなります。
ORDERBYを使用しないクエリは次のとおりです。
SELECT ClientIpAddress, Agentstring, Count(ClientIpAddress) AS Count FROM LogEntries
WHERE SiteIisId = 3 AND DateTime >= '13-09-2012 00:00:00'
GROUP BY ClientIpAddress, Agentstring
LIMIT 5
ET:1ms
そして今、ORDER BYで:
SELECT ClientIpAddress, Agentstring, Count(ClientIpAddress) AS Count FROM LogEntries
WHERE SiteIisId = 3 AND DateTime >= '13-09-2012 00:00:00'
GROUP BY ClientIpAddress, Agentstring
ORDER BY Count DESC
LIMIT 5
ET:294ミリ秒
クエリしているテーブルには1.380.855行が含まれています。
これが私が使用しているインデックスです:
CREATE INDEX "LogEntries_MostActiveClients" ON "LogEntries" ("ClientIpAddress" ASC, "Agentstring" ASC, "SiteIisId" ASC, "DateTime" DESC)
EXPLAIN QUERY PLAN
Sqliteを使用すると、インデックスを使用してテーブルをスキャンし、OrderByに使用していることがわかりますTEMB B-TREE
。
どうすればこの問題を克服できますか?明らかに、インデックスを作成することはできませCount
ん。どうすればよいですか?
どうもありがとう!