• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >SQLite > SQLite优化方法

SQLite优化方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了sqlite使用方法,sqlite具体的使用方法,sqlite3使用方法,sqlite3安装方法,sqlite方法等相关知识,希望本文的分享对您有所帮助
例如:向数据库中插入100万条数据,在默认的情况下如果仅仅是执行

sqlite3_exec(db, “insert into name values ‘lxkxf', ‘24'; ”, 0, 0, &zErrMsg);

将会重复的打开关闭数据库文件100万次,所以速度当然会很慢。因此对于这种情况我们应该使用“事务”。

具体方法如下:在执行SQL语句之前和SQL语句执行完毕之后加上

rc = sqlite3_exec(db, "BEGIN;", 0, 0, &zErrMsg);

//执行SQL语句

rc = sqlite3_exec(db, "COMMIT;", 0, 0, &zErrMsg);



这样SQLite将把全部要执行的SQL语句先缓存在内存当中,然后等到COMMIT的时候一次性的写入数据库,这样数据库文件只被打开关闭了一次,效率自然大大的提高。有一组数据对比:



测试1: 1000 INSERTs

CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100));
INSERT INTO t1 VALUES(1,13153,'thirteen thousand one hundred fifty three');
INSERT INTO t1 VALUES(2,75560,'seventy five thousand five hundred sixty');
... 995 lines omitted
INSERT INTO t1 VALUES(998,66289,'sixty six thousand two hundred eighty nine');
INSERT INTO t1 VALUES(999,24322,'twenty four thousand three hundred twenty two');
INSERT INTO t1 VALUES(1000,94142,'ninety four thousand one hundred forty two');

SQLite 2.7.6:
13.061

SQLite 2.7.6 (nosync):
0.223




测试2: 使用事务 25000 INSERTs

BEGIN;
CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100));
INSERT INTO t2 VALUES(1,59672,'fifty nine thousand six hundred seventy two');
... 24997 lines omitted
INSERT INTO t2 VALUES(24999,89569,'eighty nine thousand five hundred sixty nine');
INSERT INTO t2 VALUES(25000,94666,'ninety four thousand six hundred sixty six');
COMMIT;

SQLite 2.7.6:
0.914

SQLite 2.7.6 (nosync):
0.757




可见使用了事务之后却是极大的提高了数据库的效率。但是我们也要注意,使用事务也是有一定的开销的,所以对于数据量很小的操作可以不必使用,以免造成而外的消耗。
</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • SQLite中重置自动编号列的方法
  • SQLite优化方法

相关文章

  • 2017-05-11为SQLite3提供一个ANSI到UTF8的互转函数
  • 2017-05-11一些很有用的SQLite命令总结
  • 2017-05-11保护你的Sqlite数据库(SQLite数据库安全秘籍)
  • 2017-05-11SQLite数据库管理系统-我所认识的数据库引擎
  • 2017-05-11SQLite数据库安装及基本操作指南
  • 2017-05-11SQLite 入门教程四 增删改查 有讲究
  • 2017-05-11sqlite3 top的查询及limit语法介绍
  • 2018-11-28sqlite 判断表中是否包含某个字段
  • 2017-05-11SQLite教程(十四):C语言编程实例代码(2)
  • 2017-05-11保护你的Sqlite数据库(SQLite数据库安全秘籍)

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • SQLite 入门教程四 增删改查 有讲究
    • System.Data.SQLite 数据库详细介绍
    • sqlite时间戳转时间语句(时间转时间戳)
    • sqlite中文乱码问题原因分析及解决
    • Sqlite 常用函数 推荐
    • SQLite教程(十二):锁和并发控制详解
    • 为SQLite3提供一个ANSI到UTF8的互转函数
    • sqlite判断一个字符串是否包含
    • SQLite学习手册(SQLite在线备份)
    • SQLite3 命令行操作指南

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有