SQLite性能提升靠索引?还是索引?

您的查询是否花费太长时间才能运行?在本文,我将解释索引在SQLite中如何工作,以及如何设计索引以使您最重要的查询达到更好的性能。下图即是一个索引使用的真实场景。

幸运的是,我们无需了解杜威十进制分类法(Dewey Decimal System)即可了解SQLite索引的工作原理!

 

主键,查询计划和二分搜索

当您在SQLite中定义表时,可以选择将INTEGER列表示为AUTO_INCREMENT PRIMARY KEY,或者使用系统为您提供的默认rowid主键列。当您向该表添加新记录时,系统会为这些主键字段自动分配一个递增的唯一值,并以该主键的升序方式存储在数据库文件中。

以主键排序的顺序存储记录的好处是,当您要查找具有某个ID的记录时,SQLite可以在O(log n)时间内执行二分搜索,而不是完整的O(n) 时间去扫描全表。

二分搜索:O(log n)与完全扫描:O(n)的比较

 

想象一下,我们有一个表,其中包含有关标签的信息,这些信息是通过以下CREATE TABLE语句定义的:

CREATE TABLE tags (

    title TEXT,

    description TEXT,

    created TEXT

);

示例数据如下:

该表未明确指定PRIMARY KEY列,因此使用rowid。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值