索引
索引(Index)是一种特殊的查找表,数据库搜索引擎用来加快数据检索。简单地说,索引是一个指向表中数据的指针。
比如:在图书馆找书时,可以通过图书编号、图书分类等信息快速索引到你要找的书。
- 索引虽然能够加快SELECT查询和WHERE子句的速度,但是他也会减慢使用UODATE和INSERT语句时的数据输入。
- 索引可以创建或删除,不会影响数据。
- 索引列可以指定单列或多列
- 索引也可以是唯一的,与 UNIQUE 约束类似,在列上或列组合上防止重复条目。
创建索引
-- 语法 CREATE INDEX index_name ON table_name -- 索引列可以指定单列或多列 -- 单列 CREATE INDEX index_name ON table_name(column_name); -- 多列 CREATE INDEX index_name ON table_name (column1,column2); -- 唯一索引 CREATE UNIQUE INDEX index_name ON table_name (column_name); -- 隐式索引 -- sqlite数据库会为表的主键自动创建一个索引,不需要自己主动去创建,称为 隐式索引
查看索引
SELECT * FROM sqlite_master WHERE type='index';
删除索引
DROP INDEX index_name;
创建索引的注意项
- 索引不应该使用在较小的表上。
- 索引不应该使用在有频繁的大批量的更新或插入操作的表上。
- 索引不应该使用在含有大量的 NULL 值的列上。
- 索引不应该使用在频繁操作的列上。
索引使用(Indexed By)
当创建索引后,在写语句时,需要使用索引来查询(修改、删除)数据。
-- 语法 SELECT|UPDATE|DELETE column1,column2... INDEXED BY (index_name) table_name WHERE [condition]; -- 实例 -- 先创建索引name_index CREATE INDEX name_index ON link_men(name); -- 使用索引name_index查询数据 SELECT * FROM link_men INDEXED BY name_index WHERE name like '兰%';