sqlite

推荐列表 站点导航

当前位置:首页 > 数据库 > sqlite >

SQLite速度评测代码

来源:网络整理  作者:网友投稿  发布时间:2020-12-28 04:13
SQLite 作为一个轻量级嵌入式数据库,还是非常好用的。雨痕极力推荐~~~~~~...

批量插入1000条记录。

今天有个朋友测试 SQLite,不好的代码效率差的不是一点半点,那么原代码 1000 次插入起码开启了 1000 个事务,我加几行代码 (新增代码标记 // -------------------),耗时 0.2 秒,居然耗时 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,其实这是数据库操作的基本常识,我晕~~~~~~ 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,SQLite 缺省为每个操作启动一个事务,事务开启 + SQL 执行 + 事务关闭 自然耗费了大量的时间,这也是后面显示启动事务后为什么如此快的原因, ,大家要紧记, [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(); // 连续插入1000条记录 for (int i = 0; i 1000; i++) { cmd.CommandText = insert into [test1] ([s]) values (?); cmd.Parameters[0].Value = i.ToString(); cmd.ExecuteNonQuery(); } // 停止计时 watch.Stop(); Console.WriteLine(watch.Elapsed); } 哎~~~~ 一个常识性的错误。

这差距是不是太大了点? 为什么只是简单启用了一个事务会有这么大的差距呢?很简单, [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 { // 连续插入1000条记录 for (int i = 0; i 1000; 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); } 执行一下,然后得出的结论是:SQLite 效率太低,。

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://www.juheyunku.com/sql/sqlite/10030.shtml

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

SQLite速度评测代码

2020-12-28 编辑:网友投稿

批量插入1000条记录。

今天有个朋友测试 SQLite,不好的代码效率差的不是一点半点,那么原代码 1000 次插入起码开启了 1000 个事务,我加几行代码 (新增代码标记 // -------------------),耗时 0.2 秒,居然耗时 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,其实这是数据库操作的基本常识,我晕~~~~~~ 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,SQLite 缺省为每个操作启动一个事务,事务开启 + SQL 执行 + 事务关闭 自然耗费了大量的时间,这也是后面显示启动事务后为什么如此快的原因, ,大家要紧记, [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(); // 连续插入1000条记录 for (int i = 0; i 1000; i++) { cmd.CommandText = insert into [test1] ([s]) values (?); cmd.Parameters[0].Value = i.ToString(); cmd.ExecuteNonQuery(); } // 停止计时 watch.Stop(); Console.WriteLine(watch.Elapsed); } 哎~~~~ 一个常识性的错误。

这差距是不是太大了点? 为什么只是简单启用了一个事务会有这么大的差距呢?很简单, [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 { // 连续插入1000条记录 for (int i = 0; i 1000; 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); } 执行一下,然后得出的结论是:SQLite 效率太低,。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://www.juheyunku.com/sql/sqlite/10030.shtml

相关文章

风云图片

推荐阅读

返回sqlite频道首页