在 SQLite 中,可以使用 CREATE INDEX
语句为表中的字段添加索引,以加速查询操作。
1. 为单个字段添加索引
假设有一个表 users
,并且你想为 email
字段创建索引:
CREATE INDEX idx_users_email ON users(email);
这条语句会为 users
表的 email
字段创建一个名为 idx_users_email
的索引。
2. 为多个字段添加复合索引
如果你希望为多个字段创建联合索引(复合索引),可以这样做:
CREATE INDEX idx_users_name_email ON users(first_name, last_name, email);
这条语句会为 users
表中的 first_name
、last_name
和 email
字段创建一个复合索引。
3. 为唯一字段添加唯一索引
如果你希望创建一个唯一索引(确保索引字段的值唯一),可以使用 UNIQUE
关键字:
CREATE UNIQUE INDEX idx_users_unique_email ON users(email);
这条语句会为 users
表的 email
字段创建一个唯一索引,确保该字段的值是唯一的。
4. 删除索引
如果你想删除一个已经创建的索引,可以使用 DROP INDEX
语句:
DROP INDEX idx_users_email;
5. 查看当前索引
你可以通过以下 SQL 语句查看当前数据库中的所有索引:
SELECT name FROM sqlite_master WHERE type = 'index';
索引注意事项
- 性能提升:索引可以提高查询速度,特别是对于
SELECT
查询中使用WHERE
子句过滤条件的字段。但索引也会带来一定的开销,特别是在INSERT
、UPDATE
或DELETE
时,因为数据库需要同时更新索引。 - 选择性:索引对高选择性的字段(即字段值种类多且分布广的字段)效果最好。例如,在
email
字段上创建索引会比在gender
字段(只有两个值,M
和F
)上创建索引更有效。
因此,建议只为查询中常用的字段(尤其是经常用于过滤或排序的字段)创建索引,以平衡查询性能和存储/写入性能。