Query가 테이블을 아예 안 건드려
Covering index는 query가 필요로 하는 컬럼을 전부 품고 있는 인덱스야. WHERE 절에 쓰는 것도, SELECT list에 있는 것도 다. 그러면 SQLite가 main 테이블을 아예 안 건드리고 인덱스 B-tree만으로 답을 내. EXPLAIN QUERY PLAN이 USING COVERING INDEX라고 알려주지.
query를 덮는 방법은 둘이야.
- composite 인덱스에서 거르는 컬럼 뒤에 SELECT하는 컬럼을 덧붙이기.
- SQLite의 표현식 인덱스로, 자주 SELECT하는 계산값을 미리 뽑아두기.
Warning: 인덱스가 넓어지면 write 부담과 디스크 사용량이 같이 올라가. Covering은 정밀 도구지 기본값이 아니야. 뜨겁다고 확인된 query에만 쓰고, 모든 query에 깔아두지는 마.