位置: 编程技术 - 正文

SQLite速度评测代码

编辑:rootadmin
今天有个朋友测试 SQLite,然后得出的结论是:SQLite 效率太低,批量插入条记录,居然耗时 2 分钟! 下面是他发给我的测试代码。我晕~~~~~~ using System.Data; using System.Data.Common; using System.Data.SQLite; // 创建数据库文件 File.Delete("test1.db3"); SQLiteConnection.CreateFile("test1.db3"); DbProviderFactory factory = SQLiteFactory.Instance; using (DbConnection conn = factory.CreateConnection()) { // 连接数据库 conn.ConnectionString = "Data Source=test1.db3"; conn.Open(); // 创建数据表 string sql = "create table [test1] ([id] INTEGER PRIMARY KEY, [s] TEXT COLLATE NOCASE)"; DbCommand cmd = conn.CreateCommand(); cmd.Connection = conn; cmd.CommandText = sql; cmd.ExecuteNonQuery(); // 添加参数 cmd.Parameters.Add(cmd.CreateParameter()); // 开始计时 Stopwatch watch = new Stopwatch(); watch.Start(); // 连续插入条记录 for (int i = 0; i < ; i++) { cmd.CommandText = "insert into [test1] ([s]) values (?)"; cmd.Parameters[0].Value = i.ToString(); cmd.ExecuteNonQuery(); } // 停止计时 watch.Stop(); Console.WriteLine(watch.Elapsed); } 哎~~~~ 一个常识性的错误,我加几行代码 (新增代码标记 "// <-------------------")。 using System.Data; using System.Data.Common; using System.Data.SQLite; // 创建数据库文件 File.Delete("test1.db3"); SQLiteConnection.CreateFile("test1.db3"); DbProviderFactory factory = SQLiteFactory.Instance; using (DbConnection conn = factory.CreateConnection()) { // 连接数据库 conn.ConnectionString = "Data Source=test1.db3"; conn.Open(); // 创建数据表 string sql = "create table [test1] ([id] INTEGER PRIMARY KEY, [s] TEXT COLLATE NOCASE)"; DbCommand cmd = conn.CreateCommand(); cmd.Connection = conn; cmd.CommandText = sql; cmd.ExecuteNonQuery(); // 添加参数 cmd.Parameters.Add(cmd.CreateParameter()); // 开始计时 Stopwatch watch = new Stopwatch(); watch.Start(); DbTransaction trans = conn.BeginTransaction(); // <------------------- try { // 连续插入条记录 for (int i = 0; i < ; i++) { cmd.CommandText = "insert into [test1] ([s]) values (?)"; cmd.Parameters[0].Value = i.ToString(); cmd.ExecuteNonQuery(); } trans.Commit(); // <------------------- } catch { trans.Rollback(); // <------------------- throw; // <------------------- } // 停止计时 watch.Stop(); Console.WriteLine(watch.Elapsed); } 执行一下,耗时 0.2 秒。这差距是不是太大了点? 为什么只是简单启用了一个事务会有这么大的差距呢?很简单,SQLite 缺省为每个操作启动一个事务,那么原代码 次插入起码开启了 个事务,"事务开启 + SQL 执行 + 事务关闭" 自然耗费了大量的时间,这也是后面显示启动事务后为什么如此快的原因。其实这是数据库操作的基本常识,大家要紧记,不好的代码效率差的不是一点半点。

推荐整理分享SQLite速度评测代码,希望有所帮助,仅作参考,欢迎阅读内容。

SQLite速度评测代码

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

SQLite优化方法 例如:向数据库中插入万条数据,在默认的情况下如果仅仅是执行sqlite3_exec(db,insertintonamevalues‘lxkxf',‘';,0,0,&zErrMsg);将会重复的打开关闭数据库文

保护你的Sqlite数据库(SQLite数据库安全秘籍) SQLite无任何限制的授权协议以及支持大部分标准的SQL语句,相信会有越来越多的人使用这个数据库。PHP与SQLite的结合就如同当年的ASP与ACCESS结合一样,

Sqlite 常用函数 推荐 1、打开数据库:说明:打开一个数据库,文件名不一定要存在,如果此文件不存在,sqlite会自动创建。第一个参数指文件名,第二个参数则是定义的sqli

标签: SQLite速度评测代码

本文链接地址:https://www.jiuchutong.com/biancheng/312799.html 转载请保留说明!

上一篇:PHP中的mongodb group操作实例(php 操作mongodb)

下一篇:SQLite优化方法

  • 个人所得税C表怎么填写
  • 公司申报房产税 土地取得时间怎么写的
  • 企业税号还未开户
  • 增值税销项税额账务处理
  • 银行利息支出税前扣除标准
  • 硬盘录像机开发板
  • 小微企业所得税税率2.5% 10% 25%
  • 主营业务成本为什么在借方
  • 个体户4年不注销的后果消
  • 小规模纳税人免税怎么做账
  • 附加税预缴分录
  • 进项抵扣用不完怎么处理
  • 小规模纳税人一个季度多少免税
  • 财务报表中利润率怎么算
  • 房地产企业预收款预缴增值税
  • 产品税率下调企业是否要到税务部门备案
  • 企业如何加强应收账款的管理
  • 补提以前年度折旧
  • 股权投资和债权投资的风险
  • 增值税一般纳税人证明文件
  • 工程维修费用怎么入账
  • 纳税评估滞纳金会计分录怎么处理?
  • 个人去税务局能开什么类型的发票
  • 外贸出口企业城市排名
  • 营改增后建安企业账务处理
  • 个体户交地税
  • 同一控制下企业合并入账价值
  • 科研项目经费怎么填
  • 法定盈余公积金转增资本不超过25%
  • 出租厂房收取水电费吗
  • 出口退税的计算题
  • php的使用
  • php过滤emoji
  • 注销公司如何注销
  • php权限框架
  • 企业应交税费的会计分录
  • 项目成本估算的结果一般不包括
  • uniapp打开h5页面
  • framework教程
  • 制造费用的工资怎么结转
  • 所得税季度申报弥补以前年度亏损
  • 非成品油发票为什么不能抵扣
  • 合伙结算转借款
  • 初识SQLITE3数据库
  • 送礼的烟酒去哪里买
  • 定额备用金与非备用金
  • 一般纳税人增值税怎么算
  • 自行开具增值税专用发票怎么开
  • 开发票,对方收取税点,如何计算?
  • 代收收入
  • 纳税人销售免税产品开具专票
  • 建筑施工企业劳务费怎么入成本
  • 债券发行费用计入初始成本会计分录
  • 融资租赁与经营租赁的区别主要是
  • mysql5.7.29安装
  • sql server使用教程
  • mysql的json数据类型
  • Linux系统中文件的文件名存储在文件所在的目录
  • vps安装centos
  • win7更新和安全在哪里
  • 虚拟机下安装操作软件
  • win7系统怎么设置屏幕常亮
  • 硬盘安装fedora
  • WIN10系统中引导修复不工作
  • popup怎么用
  • python black
  • Unity3D游戏开发(第2版)
  • jquery自定义事件
  • unity触摸屏控件
  • vue的自定义组件
  • python静态函数
  • unity获取鼠标
  • unity中ngui
  • JavaScript中getUTCSeconds()方法的使用详解
  • jquery Deferred 快速解决异步回调的问题
  • input组件封装
  • python调用fortran函数传入数组
  • 出口退税额与出口退税收入
  • 会计人员的立场
  • 抄税失败是怎么回事
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设