一句话概念
索引(Index) 就像是数据库里的“目录”或“书的索引页”。
它的主要作用是:
加快查询速度,减少数据库扫描整张表的次数。
📖 举个简单的例子
假设你有一个商品表 products
,里面有几万条记录。
如果你执行下面的查询:
SELECT * FROM products WHERE brand = 'Nike';
-
如果没有索引,SQLite 必须从头到尾一行行地去找,叫做全表扫描(Full Table Scan),很慢。
-
如果给
brand
字段建了索引:CREATE INDEX idx_product_brand ON products(brand);
那么数据库会像查字典一样,直接跳到 “Nike” 那一页,瞬间定位到结果。
🚀 索引的作用总结
功能 | 说明 |
---|---|
🔍 加快查询速度 | 对 WHERE 、JOIN 、ORDER BY 、GROUP BY 等操作提速 |
⚡ 提高排序性能 | 如果查询语句中带 ORDER BY category ,而该列有索引,会自动利用索引排序 |
🔗 提高关联性能 | 当你 JOIN 两张表时,若连接字段有索引,匹配更快 |
🧭 帮助唯一性约束 | UNIQUE 索引可以防止重复值(比如 product_code ) |
⚠️ 注意事项(索引的代价)
虽然索引很强大,但也有 副作用:
问题 | 说明 |
---|---|
🐢 插入/更新变慢 | 每次修改数据时,索引也要更新 |
💾 占用空间 | 索引要额外占磁盘空间(有时比表还大) |
📉 索引太多会拖慢性能 | 不是越多越好,常用的查询列才值得建索引 |