SQLite Indexes

Creating and managing indexes

Create Index

CREATE INDEX idx_email ON users(email); # create index
CREATE UNIQUE INDEX idx_username ON users(username); # unique index

Composite Index

CREATE INDEX idx_name ON users(last_name, first_name); # multi-column index

Partial Index

CREATE INDEX idx_active ON users(email) WHERE active = 1; # conditional index

Expression Index

CREATE INDEX idx_lower_email ON users(LOWER(email)); # index on expression

Drop Index

DROP INDEX idx_email; # remove index

List Indexes

.indexes users # list table indexes
PRAGMA index_list(users); # index info
PRAGMA index_info(idx_email); # index columns

Analyze

ANALYZE; # update statistics for all indexes
ANALYZE users; # update statistics for table