美文网首页
SQLite中的索引

SQLite中的索引

作者: pobi | 来源:发表于2016-06-11 23:32 被阅读2807次

简介

最近在编写一个小工具库,主要为了简化使用SQLite,避免一些重复性代码的编写。在这个过程中比较详细的了解了SQLite中的一些技术点,比如索引,对自己之前的认知也有蛮大提升,所以记录如下~

之前自己对索引的认知只停留在可以提高查询速度上,也没有完整的去了解索引的技术点,导致错误的使用索引。记得有一次,想为开发的APP进行调优,在数据库这块想提升下查询速度,为所有的主键都加上索引:)(SQLite数据库会为主键自动加上索引,不需要自己手动去加)。

索引的创建

索引的创建比较直观

CREATE INDEX index_name ON table_name(column_name...);

索引列可以指定单列或多列

CREATE INDEX name_index ON user(name); // 单列
CREATE INDEX name_address_index ON user(name, address); // 多列

UNIQUE 索引

索引也可以指定UNIQUE约束,跟在表的列上指定UNIQUE约束功能差不多,也可以对列进行约束,确保唯一性。当然还有一个功能是可以加快查询速度。其实可能想象一下,我们在图书馆找书时,有些书名字一样,但作者不一样,还得过去再看看哪本是我们要找的。但如果加入了唯一性约束,就可以减少这个步骤了,查找速度会更快

CREATE UNIQUE INDEX name_index ON user(name); 

SQLite数据库会为表的主键自动创建一个索引,不需要自己主动去创建

sqlite_autoindex_tableName_1

在SQLite命令行中可以使用.indices table_name查看

创建索引时应该参考的几点意见

最让人迷惑的是索引应该在什么时候使用为好,怎样才能正确的使用索引,这个值得我们去推敲,下面是几点参考意见

  • 当表中的数据量比较少时,应该避免使用索引。其实也好理解,就那么一些数据,可以很快的找到我们要的数据,确实没有必要再建一个索引,因为索引也是需要维护的
  • 当表update或insert操作比较频繁时是不适合建索引的。可以拿我们的图书管来理解,如果有些类型的书籍基本上没什么人借阅,但经常会有新的书籍存入,这个时候就需要去更新索引,徒耗劳力
  • NULL出现次数比较多的列并不适合作为索引列。为NULL出现次数比较多的列建索引其实没有多大意义
  • 当某列或某几个列操作(CRUD)比较频繁时也不适合作为索引列。主要考量的是索引主要作为查询速度的优化,如果列的操作比较频繁,可能刚插入该列,马上又被删除或更新,会导致索引要经常更新或压根没起到该有的作用

相关文章

  • SQLite中的索引

    简介 最近在编写一个小工具库,主要为了简化使用SQLite,避免一些重复性代码的编写。在这个过程中比较详细的了解了...

  • 【android】sqlite索引

    (SQLite数据库会为主键自动加上索引,不需要自己手动去加) 索引的创建 索引的创建比较直观 UNIQUE 索引...

  • SQLite 删除表

    SQLite 删除表 SQLite 的 DROP TABLE 语句用来删除表定义及其所有相关数据、索引、触发器、约...

  • Sqlite索引优化

    背景 sqlite作为客户端常用的数据库,已经成为移动端开发不可避免的一项技能,但是在使用的过程中却常常会出现性能...

  • SQLite 索引(Index)

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

  • 数据库语句记录

    创建多列索引 autoincrement 不建议使用CONSTRAINT用意解析SQLite INSERT OR ...

  • 源码分析

    sqlite3 where结构中的查询重写,选取适合的索引 index 结构体内容 一个index结果里面,有好多...

  • SQLite Indexed By

    SQLite Indexed By "INDEXED BY index-name" 子句规定必须需要命名的索引来查...

  • [转载]关于sqlite_master表

    SQLite数据库中一个特殊的名叫 SQLITE_MASTER 上执行一个SELECT查询以获得所有表的索引。每一...

  • sqlite索引的原理 (转)

    转自 : ## sqlite索引的原理 引言 这篇文章,里面讲到对于一个41G大小、包含百万条记录的数据库进行...

网友评论

      本文标题:SQLite中的索引

      本文链接:https://www.haomeiwen.com/subject/nsledttx.html