使用Sqlite时有哪些可以优化的地方

使用sqlite时有哪些可以优化的地方

创建索引

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

优点

加快了数据库检索的速度,包括对单表查询、连表查询、分组查询、排序查询。经常是一到两个数量级的性能提升,且随着数据数量级增长。

缺点

索引的创建和维护存在消耗,索引会占用物理空间,且随着数据量的增加增加

在对数据库进行增删改时需要维护索引,所以会对增删改的性能存在影响。

使用场景

  • 当某字段数据更新频率较低,查询频率较高,经常有范围查询(>,<,=,>=,<=)或order by、group by发生时建议使用索引。并且选择度越大,建索引越有优势,这里选择度指一个字段中唯一值的数量/总的数量
  • 经常同时存取多列,且每列都含有重复值可考虑建立复合索引

索引的创建和维护存在消耗,索引会占用物理空间,且随着数据量的增加增加
在对数据库进行增删改时需要维护索引,所以会对增删改的性能存在影响。

什么情况下要避免使用索引

虽然索引的目的在于提高数据库性能,但这里有几个情况需要避免使用索引。使用索引时,应重新考虑下列准则:

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

使用事务

特点

原子性操作,要么全部成功,要么全部失败;在执行大量数据的插入操作时,避免频繁操作cursor,可以大幅减少insert操作时间,一般为1-2个量级

查询必须字段

查询时只取需要的字段和结果集,更多的结果集会消耗更多的时间及内存,更多的字段会导致更多的内存消耗。

更多参考资料

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能