Here's a concrete example: CREATE TABLE foo (a TEXT); CREATE INDEX foo_a ON foo (a); INSERT INTO foo (a) VALUES ('1234'); INSERT INTO foo (a) VALUES ('2345'); INSERT INTO foo (a) VALUES ('3456'); EXPLAIN QUERY PLAN SELECT MIN(a), MAX(a) FROM foo; EXPLAIN QUERY PLAN SELECT MIN(a) FROM foo; EXPLAIN QUERY PLAN SELECT MAX(a) FROM foo; When I run this with the command-line shell on an initially nonexistent database (as in "shell foo.db < foo.sql"), I get QUERY PLAN `--SCAN foo QUERY PLAN `--SEARCH foo USING COVERING INDEX foo_a QUERY PLAN `--SEARCH foo USING COVERING INDEX foo_a