sqlite一次插入多条记录的优化方法

sqlite一次插入多条记录的优化方法
96 浪尖儿
2016.08.17 17:50* 字数 579 阅读 1397评论 0喜欢 3
Date: 2014-08-09
Summary: 有大量的数据要插入数据库,但是每次只写入一条在速度上很难接受。本文介绍了在sqlite数据库中一次插入多条记录的优化方法。

sqlite一次插入多条记录的优化方法
问题
今天在使用sqlite向表中插入数据的时候发现,对于一次插入多条记录的问题来说,insert into的执行速度慢到了无法接受。我在实际的使用中,想一次性插入200条记录,要做1000次左右的插入,这样的话,我每次都要把200条记录的插入语句组织成一个长字符串,然后执行一次executeUpdate语句。没想到插入操作这么慢,只好请教搜索引擎,看有没有什么好办法。

试验
答案当然是有的。因为我一直使用的sql语句是类似MySQL的:

INSERT INTO ‘tablename’ (‘column1’, ‘column2’) VALUES
(‘data1’, ‘data2’),
(‘data1’, ‘data2’),
(‘data1’, ‘data2’),
(‘data1’, ‘data2’);
根据网友的回复,只需要使用不同的语法,在SQLite中把插入语句重写成:

INSERT INTO ‘tablename’
SELECT ‘data1’ AS ‘column1’, ‘data2’ AS ‘column2’
UNION SELECT ‘data3’, ‘data4’
UNION SELECT ‘data5’, ‘data6’
UNION SELECT ‘data7’, ‘data8’
我把原来的代码改成新的代码以后,发现速度明显是快多了!简单做了一下测试,原来的方法做10次插入操作,每次写入如200条数据已经需要222137ms,新的方法做同样的操作只需要1841ms,这到底是什么节奏?

查看了一下SQLite的官方文档,原来insert 还真有这种用法的。

SQLite insert

sqlite insert
而且官方文档上面很明确的说明,insert语句有三种基本的形式,但是性能上为什么会有如此大的差别?这个还真是没有想明白。。。

怎样检查一个表是否存在
另外顺便记一下,在SQLite中查询一个表是否存在的方法:

SELECT name FROM sqlite_master WHERE type=‘table’ AND name=‘table_name’;
table_name就是传进去要查找的表的名字,当然也可以不要。这个语句会返回数据库中的表名字哦!

参考
http://stackoverflow.com/questions/1609637/is-it-possible-to-insert-multiple-rows-at-a-time-in-an-sqlite-database/1734067#1734067

http://stackoverflow.com/questions/1601151/how-do-i-check-in-sqlite-whether-a-table-exists

http://www.sqlite.org/lang_insert.html

来源:https://www.jianshu.com/p/faa5e852b76b

内容概要:本文围绕VSG构网型逆变器与跟网型逆变器之间的双向平滑切换控制策略展开深入研究,系统探讨了GFL(跟网型)与GFM(构网型)逆变器在并网与孤岛运行模式下的切换机制。基于Simulink平台构建仿真模型,详细实现了切换过程中的控制逻辑设计、系统稳定性保障及动态响应性能优化等关键技术环节,重点解决模式切换过程中可能出现的电流冲击、频率电压波动等问题,确保微电网在不同运行工况下的连续稳定运行。研究还融合事件触发机制与分布式二次控制策略,实现频率和电压的无差调节,并提升通信资源受限或遭受DoS攻击等异常情况下的系统弹性与协同控制能力,适用于高比例新能源接入场景下的微电网灵活运行需求。; 适合人群:具备电力电子、自动控制、微电网与新能源系统等相关专业背景,从事电力系统仿真、分布式能源控制研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入理解构网型与跟网型逆变器的运行机理及切换控制原理;②设计并仿真验证GFL/GFM模式间的双向平滑切换策略;③应用于微电网分层控制、孤岛检测与无缝切换、二次频率电压恢复等实际工程场景;④支撑IEEE Transactions等顶级期刊论文的复现、科研项目开发及创新性课题研究。; 阅读建议:建议结合提供的Simulink仿真模型同步学习,重点关注模式切换判据、控制架构切换逻辑、事件触发件设定及控制器参数整定方法,配合网盘中的完整代码与模型资源进行仿真调试,以深入掌握其实现细节并开展进一步的优化与拓展研究。
内容概要:本文研究基于分布式模型预测控制(DMPC)的多个固定翼无人机一致性控制问题,通过构建固定翼无人机的非线性动力学模型,结合分布式控制架构实现多无人机系统在复杂环境下的状态一致性与协同飞行。文中系统阐述了模型预测控制算法的设计流程,引入一致性协议以确保编队稳定性,并充分考虑固定翼无人机的强非线性、姿态耦合特性以及通信延迟、局部信息交互受限等实际约束件。通过Matlab进行仿真验证,展示了多无人机在不同初始件下实现轨迹协同、速度同步与队形保持的有效性。研究重点在于提升控制系统的鲁棒性、可扩展性与实时性,为复杂动力学系统下的多智能体协同控制提供了可行的技术路径。; 适合人群:具备自动控制理论、飞行器动力学、多智能体系统或优化控制基础的研究生、科研人员及从事无人机系统开发的工程技术人员。; 使用场景及目标:①应用于多无人机协同编队飞行、区域覆盖监测、灾害救援与军事侦察等实际任务场景;②为分布式控制算法在非线性、受限通信件下的多智能体系统中提供算法设计与仿真实现参考;③推动DMPC理论在航空航天领域中的一致性控制与自主协同方向的发展; 阅读建议:建议读者结合提供的Matlab代码深入理解系统建模、代价函数构建、分布式优化求解及一致性协议集成等关键环节,重点关注算法在非线性系统中的收敛性与鲁棒性表现,可进一步拓展至异构无人机协同、动态避障或通信拓扑时变等更具挑战性的研究方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值