sqlite 查询效率对比
目录
使用方面:
效率对比:
批量插入:
查询1000万条
众所周知,sqlite3提供了三种查询数据的接口,分别是 sqlite3_exec,sqlite3_get_table,sqlite3_prepare_v2,这三种在使用和效率上有什么区别呢?
使用方面:
sqlite3_exec 函数,需要传入一个函数指针,每一条查询结果在回调函数函数中取得,当然在C++11基础上还可以使用lambda函数,见下
int retCode = sqlite3_exec(m_sqlite_db, sql_str,[](void *data, int columns , char **field_values, char **column_names)->int{for(int i=0; i<columns ; i++){const char *str = field_values[i];std::string dddd = str ? str : "";}return 0;} , 0, &zErrMsg);
另外两个函数的使用见 sqlite 使用问题总结
效率对比:
前提:单表,表中有16个字段。
批量插入:
这是只对比使用sqlite3_prepare_v2方式批量插入1000万条数据的情况。
在显示开启事务的情况下,批量插入1000万条数据花费92秒,反之在花费了?? 秒(想测试一下,结果等了3个小时没有等到结果),可见批量插入数据时开启显示事务的重要性。
查询1000万条
使用sqlite3_exec 查询花费63秒
使用sqlite3_get_table 查询花费84秒
使用sqlite3_prepare_v2 查询花费61秒
可见查询是效率 sqlite3_prepare_v2 > sqlite3_exec > sqlite3_get_table
凡是过往,即为序章
sqlite 查询效率对比相关推荐
- sql 中or与in的查询效率对比
原文链接:http://blog.chinaunix.net/uid-20639775-id-3416737.html 在网上一直看到的是or和in的效率没啥区别,一直也感觉是这样,前几天刚好在看&l ...
- SQL中IN和OR效率对比
测试结果如下: 第一种情况,ID列为主键的情况,4组测试执行计划一样,执行的时间也基本没有区别. A组or和in的执行时间: or的执行时间为:0.002s in的执行时间为:0.002s B ...
- mysql in union all_MySQL中使用or、in与union all在查询命令下的效率对比_MySQL
OR.in和union all 查询效率到底哪个快? 网上很多的声音都是说union all 快于 or.in,因为or.in会导致全表扫描,他们给出了很多的实例. 但真的union all真的快于o ...
- C++拾取——Linux下实测布隆过滤器(Bloom filter)和unordered_multiset查询效率
布隆过滤器是一种判定元素是否存在于集合中的方法.其基本原理是使用哈希方法将数据映射到一个很长的向量上.在维基百科上,它被称为"空间效率和查询时间都远远超过一般的算法"的方法.由于它 ...
- mongo mysql 条件查询效率_mongodb查询条件对查询效率的影响
背景和概述 数据状况: mongodb的一个db中存了近2000万记录,有type(字符串).ctime(float,创建时间)等索引参数,记录的自然顺序和ctime的排序是一致的. 查询需求: 从第 ...
- Oracle Spatial分区应用研究之一:分区与分表查询性能对比
1.名词解释 分区:将一张大表在物理上分成多个分区,逻辑上仍然是同一个表名. 分表:将一张大表拆分成多张小表,不同表有不同的表名. 两种数据组织形式的原理图如下: 图 1分表与分区的原理图 2.实验目 ...
- NOT IN、JOIN、IS NULL、NOT EXISTS效率对比
语句一:select count(*) from A where A.a not in (select a from B) 语句二:select count(*) from A left join B ...
- 改了一行代码,MySQL查询效率提升了80%,老板奖了我50万
⭐前言 优化MySQL数据库是数据库管理员必备的技能,通过不同的优化方式方法来达到提高MySQL数据库性能的目的. MySQL数据库当用户和数据量非常少的情况下,我们就很难判断MySQL数据库性能的 ...
- Oracle常用导出导出命令及性能效率对比
说明 Oracle导入导出命令主要有EXPDP和IMPDP.EXP和IMP,区别如下:EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用.EXPDP和IMPDP是服务端的工具程 ...
最新文章
- java基础英语---第二十一天
- 解决数据中心管综难题:管线避让的十七个原则!
- 硬盘物理序列号修改工具_精品软件:MHDD磁盘坏道扫描工具使用方法图解教程...
- AttributeError: 'StatusHandler' object has no attribute 'async_callback'
- 30分钟无坑部署K8S单Master集群
- fatal: Path ‘XXX‘ is in submodule ‘XXX‘错误(path is in submodule)
- 6月30日云栖精选夜读:程序员技术与文艺的PK_来首届阿里巴巴研发效能嘉年华...
- 应用发布服务器_Apache Tomcat 10.0.0-M1 发布,开源 Web 应用服务器
- mongoose实现批量删除和多id查询的api/方法
- 电子元件 —— 继电器
- 数据库中的年月日表达
- 实时渲染——三种渲染方法介绍
- 中兴上网卡 linux,4G网卡中兴MF831移植到linux
- PAT日志 1147 Heaps
- DOSBox常用快捷键
- ❤️解决非线性回归问题的机器学习方法总结:多项式线性模型、广义线性(GAM)模型、回归树模型、支持向量回归(SVR)模型
- HBase配置AES加密
- 163邮箱申请注册个人,163邮箱付费与免费版有什么区别?
- ENVI下的Landsat8图像融合
- java关闭scanner_java-如何中断scanner.nextline()调用