ORDER BY 문을 쿼리에 추가하면 쿼리가 매우 느려집니다.Sqlite 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
LIMIT 5
ET :
여기에 의해 ORDER없이 내 쿼리의 지금 1ms의
그리고 주문에 의해 :
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 MS
나 '표 m 쿼리에는 1.380.855 개의 행이 포함됩니다.
CREATE INDEX "LogEntries_MostActiveClients" ON "LogEntries" ("ClientIpAddress" ASC, "Agentstring" ASC, "SiteIisId" ASC, "DateTime" DESC)
EXPLAIN QUERY PLAN
SQLite는 내 인덱스를 사용하여 테이블을 스캔 있어요하여 내 주문에 대한 TEMB B-TREE
을 사용 하더군요 사용 :
여기 내가 사용 인덱스입니다.
이 문제를 어떻게 극복 할 수 있습니까? 분명히 Count
의 색인을 생성 할 수 없으므로 어떻게해야합니까?
감사합니다.
어떤 색인이 있습니까? –
'DateTime '에 대한 비교는 가장 중요한 필드 인 연으로 시작하지 않기 때문에 올바르게 작동하지 않습니다. [지원되는 날짜 형식] (http://www.sqlite.org/lang_datefunc.html) 중 하나를 사용해야합니다. –
죄송합니다. 사용중인 색인을 추가했습니다. DateTime 문제를 지적 해 주셔서 감사합니다. – jhovgaard