"상태"열이있는 테이블로 작업하고 있는데 일반적으로 2 또는 3 개의 다른 값만 있습니다. 이 테이블은 SQL 문 다음과 같은 몇 만 행을 보유 할 때 때때로, 느린 (I는 전체 테이블 스캔이 완료 가정)된다 : 기본적으로 (SQLite : COUNT 및 GROUP BY가 포함 된 speedup SQL 문
disabled | 500000
enabled | 2000000
:
SELECT state, count(*) FROM mytable GROUP BY state
나는 이런 식으로 뭔가를 얻을 것으로 예상 얼마나 많은 항목이 "활성화"되어 있고 얼마나 많은 항목이 "비활성화"되어 있는지 알고 싶습니다. 실제로는 실제 응용 프로그램의 텍스트 대신 숫자입니다.
내 상태 열에 대한 색인을 추가하는 것이 꽤 쓸모없는 것 같아요. 그곳에는 매우 다른 값만 발견 될 수 있기 때문입니다. 다른 옵션은 무엇입니까?
"타임 스탬프"열 (색인 포함)도 있습니다. 내가 sqlite3를 데이터베이스를 사용하고 지금
WHERE timestamp BETWEEN x AND y
을하지만, 다른 DB 엔진을위한 솔루션으로 흥미로운 일이 될 수 있도록 다른 데이터베이스 엔진이 너무 다르지 않다 같습니다 이상적 솔루션은 내가 추가 할 경우 잘 작동한다 잘.
감사합니다.
실행 계획은 어떻게됩니까? –
SQLite는 "detail"열에 "TABLE mytable"이라고하는 행 하나를 제공합니다 (전체 테이블 스캔이라고 생각합니다). – Jens
그러나 MS SQL은 동일한 조건 (위 조건과 2 백만 행이없는 위 문장)을 알려줍니다. SELECT 0 %, Compute Scalar 0 %, Hash Match (Aggregate) 65 %, Clustered Index Scan 35 % – Jens