SQLite 索引(Index)

    索引(Index)是一种特殊的查找表,数据库搜索引擎用来加快数据检索。简单地说,索引是一个指向表中数据的指针。

    索引有助于加快SELECT查询和WHERE子句,但它会减慢使用UPDATE和INSERT语句时的数据输入。索引可以创建或删除,但不会影响数据。

   使用CREATE INDEX语句创建索引,它允许命名索引,指定表及要索引的一列或多列,并指示索引是升序排列还是降序排列。

   索引也可以是唯一的,与UNIQUE约束类似,在列上或列组合上防止重复条目。

CREATE INDEX 命令

CREATE INDEX index_name ON table_name;

单列索引

   单列索引是一个只基于表的一个列上创建的索引。基本语法如下:

 

CREATE INDEX index_name ON table_name (column_name);

唯一索引

 

   使用唯一索引不仅仅是为了性能,同时也为了数据的完整性。唯一索引不允许任何重复的值插入到表中。基本语法如下:

CREATE UNIQUE INDEX index_name on table_name (column_name);

组合索引

   组合索引是基于一个表的两个或多个列上创建的索引。基本语法如下:

 

CREATE INDEX index_name on table_name (column1, column2);

    是否要创建一个单列索引还是组合索引,要考虑到您在作为查询过滤条件的 WHERE 子句中使用非常频繁的列。

   如果值使用到一个列,则选择使用单列索引。如果在作为过滤的 WHERE 子句中有两个或多个列经常使用,则选择使用组合索引。

隐式索引

   隐式索引是在创建对象时,由数据库服务器自动创建的索引。索引自动创建为主键约束和唯一约束。

实例

   下面是一个例子,我们将在COMPANY表的salary列上创建一个索引:

sqlite> CREATE INDEX salary_index ON COMPANY (salary);

   现在,让我们使用.indices命令列出COMPANY表上所有可用的索引,如下所示:

sqlite> .indices COMPANY

   这将产生如下结果,其中sqlite_autoindex_COMPANY_1是创建表时创建的隐式索引。

salary_index
sqlite_autoindex_COMPANY_1

   你可以列出数据库范围的所有索引,如下所示:

sqlite> SELECT * FROM sqlite_master WHERE type = 'index';

 

DROP INDEX 命令

   一个索引可以使用SQLite的DROP命令删除。当删除索引时应特别注意,因为性能可能会下降或提高。

 

   基本语法如下:

DROP INDEX index_name;

   你可以使用下面的语句来删除之前创建的索引:

sqlite> DROP INDEX salary_index;

 

避免使用索引的情况:

  • 索引不应该使用在较小的表上;
  • 索引不应该使用在有频繁的大批量的更新或插入操作的表上。
  • 索引不应该使用在含有大量的NULL值的列上;
  • 索引不应该使用在频繁操作的列上。

 

 

参考:

https://www.yuque.com/docs/share/718f31dc-da9f-498e-b774-0c387684e7ae

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值