Qt提升对SQLite数据库的读写速度
来源:互联网 发布:西安建筑科技大学网络 编辑:程序博客网 时间:2024/05/16 02:22
转载地址:http://blog.csdn.net/jiangping_zhu/article/details/18044109
在对数据库操作时,提升数据库的速率是很重要的,要不然数据量太大的话,只是操作数据库就会增加时间成本,因此,提升速率势在必行。
1.问:SQLite数据库是什么?
答:SQLite是一款轻型的数据库,他设计的目标是为了嵌入式,由于占用空间非常低,因此大量的应用于嵌入式设备中。
更直白的来说,SQLite数据库是一个存在于我们某个磁盘的文件,普通的使用,我们是在不断地打开文件–>文件操作–>关闭文件的循环中浪费时间,
如果有1千万条数据等待插入数据库,那么我们这样的操作会花好长时间,因此我们需要寻找一种方法提升读写速度。
假设:既然数据库是一个文件,那么我们为什么不能打开数据库后一次性将数据全部插入进去再关闭数据库呢?
而Qt提供的事物处理函数正好解决了这种难题,具体看下面代码
#include <QtSql/QSqlDatabase>#include <QtSql/QSqlQuery>#include <QTime>#include <QDebug>void MainWindow::on_pushButton_clicked(){ QSqlDatabase m_pDB = QSqlDatabase::addDatabase("QSQLITE", "connSQLite"); m_pDB.setDatabaseName("myTest.db3"); m_pDB.open(); QSqlQuery query("", m_pDB); QTime tmpTime; QString sql = "create table T_test(" "id int(4)," "name varchar(20)" ")"; bool nRet = query.exec(sql); if( nRet ) { qDebug()<<"create table success"; } // 开始启动事务 m_pDB.transaction(); tmpTime.start(); for(int i = 0; i<100000; i++) { bsuccess = query.exec("insert into T_test(id,name) values(2,'zhang')"); } // 提交事务,这个时候才是真正打开文件执行SQL语句的时候 m_pDB.commit(); qDebug()<<"10000条数据耗时:"<<tmpTime.elapsed()<<"ms"<<endl; QTime testTime; tmpTime.start(); for(int i = 0; i<1000; i++) { bsuccess = query.exec("insert into T_test(id,name) values(3,'wang')"); } qDebug()<<"1000条数据耗时:"<<testTime.elapsed()<<"ms"<<endl;}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
100000条数据耗时: 1382 ms —–>这是使用事物处理函数插入100000条数据所耗的时间
1000条数据耗时: 4447 ms —–>这是未使用事物处理函数插入1000条数据所耗的时间
对比一下,提升速度不是一般的高
查找数据的时候可以使用联合查询
select T_FileNext.* from T_FileNext where not exists(select * from T_FileLast where T_FileNext.FileName=T_FileLast.FileName and T_FileNext.FilePath=T_FileLast.FilePath)
使用这条SQL语句,当两张表里面有同样的4万条数据时,如果使用普通的查找所花费的时间大约是20min,而当使用联合查找是大概需要几十秒到一分钟时间
CREATE INDEX index_name ON table_name (FileName,FilePath)
当然两张表都要创建联合索引,具体的可以百度一下用法
- Qt提升对SQLite数据库的读写速度
- Qt提升对SQLite数据库的读写速度
- Qt中提高sqlite的读写速度
- Qt中提高sqlite的读写速度
- Qt中提高sqlite的读写速度
- Qt中提高SQLite的读写速度
- Qt中提高sqlite的读写速度
- Qt中提高sqlite的读写速度
- Qt中提高sqlite的读写速度
- Qt中提高sqlite的读写速度
- QT读写Sqlite数据库
- QT实现对sqlite数据库的操作
- MySQL索引对数据库查询速度的显著提升
- 详解Qt 中如何提高Sqlite读写速度
- QT 对mysql数据库操作读写遇到的问题
- 提升SQLite数据插入效率低、速度慢的方法
- 提升SQLite数据插入效率低、速度慢的方法
- 提升SQLite数据插入效率低、速度慢的方法
- 负进制
- Apache服务器安装https证书
- 初识Nginx--Linux下的基础命令
- Struts2 输入验证与自定义拦截器
- 南京邮电大学2013年硕士研究生招生复试及同等学力加试参考书目
- Qt提升对SQLite数据库的读写速度
- 高通LCD kernel层代码跟踪分析
- Struts2系列之文件上传下载
- 循环json数据
- PHP代码运行流程
- 微信小程序开发体验(热身篇)
- appium官网中文资料
- 2.韦东山嵌入式学习内存
- 套接字编程原理及例程