2012-12-22 2 views
0

나는 (item_id, updated_time, key, value) 아이템에 대한 데이터베이스 테이블을 가지고있다. 각 항목이 업데이트되는 횟수를 알고 싶습니다. 현재 검색어 :고유 한 발생 횟수를 효율적으로 계산하는 방법은 무엇입니까?

SELECT item_id, count(*) 
FROM (SELECT DISTINCT item_id, updated_time FROM updates) 
GROUP BY item_id; 

문제는 매우 느리게 실행됩니다. 내 테이블에는 2451 개의 항목과 8 백만 개의 업데이트가 있으며 데이터베이스는 현재 하루 만 처리합니다. 나는 item_id, updated_time(item_id, updated_time)에 색인을 가지고 있습니다.

sqlite에서이 쿼리를 더 빠르게 실행할 수 있습니까? 'lite'가 도움이되지 않는 곳으로 이동하겠습니까?

답변

0

하위 쿼리는 외부 쿼리에서 인덱스 최적화를 방지합니다. 이 같은 단일 쿼리, 사용 충분히 최근 SQLite는 버전

SELECT item_id, 
     count(DISTINCT updated_time) 
FROM updates 
GROUP BY item_id 

을,이 커버링 인덱스 (EXPLAIN QUERY PLAN 확인)에서 실행됩니다.

관련 문제