震惊啊,用ID查询SQLite数据库速度竟然提升了数百倍_经验分享

时间:2022-01-28 14:30:25
我一程序使用了SQLite数据库,要批量修改列,大约有2万条,因为考虑到记录在多个数据库之间转移的话ID值会变,为了有可追溯性,所以每条记录设了唯一字符串作为标识,批量修改时也用了这个字符串值作为查询依据,结果这2W条记录用了30多分钟只完成了一小点,现在改成用ID值查询了,速度资贼快,只见硬盘狂转约数秒就全部完成了。

提高效率的好方法啊

12 个解决方案

#1


数据库的字符串查询一直都是老大难,整数则是强项。
如果整数是主键的话是最快的。追加也会很快,插入和删除也会比其他数据格式做主键快很多。

#2


震惊啊,用ID查询SQLite数据库速度竟然提升了数百倍_经验分享

#3


小伙伴们也都惊呆了 震惊啊,用ID查询SQLite数据库速度竟然提升了数百倍_经验分享

#4


呵呵呵呵,这SQLite还真是有特色,都出网络版了

#5


SQLite跨平台和网络结合都好用

#6


SQLite确实好用,就是不知道电脑(设备)频繁的断电上电会不会导致数据崩溃

#7


引用 6 楼 u011081622 的回复:
SQLite确实好用,就是不知道电脑(设备)频繁的断电上电会不会导致数据崩溃

這樣的答案最好自己驗證囉~ 不然您就實際對 SQLite 做個頻繁的斷電上電耐力測試吧~ 
偶在大學期間曾經與幾位同學對 MS SQL Server 幹過這樣的測試...放在三地點.三部 Server 各裝了四部硬盤的 RAID 伺服器並以網路同步數據的機制架構...所有遠端 Client 端自動並隨機以交易機制對 Server 作數據存取並紀錄...然後不預警以仿天災與仿電力設施故障對其中兩部 Server 給 OOXX......

#8


引用 6 楼 u011081622 的回复:
SQLite确实好用,就是不知道电脑(设备)频繁的断电上电会不会导致数据崩溃


目前转换了190多个数据库,约5个多G的数据,没有做过极端情况的测试,也发生过数据损失的情况

之前用Access数据库的时候是170多个库,使用数年,其中有一个损失了,有400多M,11万多条数据,损失不小

和Access相比SQLITE有诸多优点,也有不足,最明显的优点有两个,一是支持超长文本,二是数据库尺寸没有2G的尺寸限制

Access完美支持的文本长度实际上只有256个字符,所谓的备注和ole字段有明显缺点是不支持select查询

缺点也很明显,就是多任务不行,两个进程同时写一个库时必定会异常,Access也有约不超过10%的概率异常相对好很多

#9


上面打漏了一个字,是sqlite没有发生过数据损失的情况

#10


引用 7 楼 start8588 的回复:
Quote: 引用 6 楼 u011081622 的回复:

SQLite确实好用,就是不知道电脑(设备)频繁的断电上电会不会导致数据崩溃

這樣的答案最好自己驗證囉~ 不然您就實際對 SQLite 做個頻繁的斷電上電耐力測試吧~ 
偶在大學期間曾經與幾位同學對 MS SQL Server 幹過這樣的測試...放在三地點.三部 Server 各裝了四部硬盤的 RAID 伺服器並以網路同步數據的機制架構...所有遠端 Client 端自動並隨機以交易機制對 Server 作數據存取並紀錄...然後不預警以仿天災與仿電力設施故障對其中兩部 Server 給 OOXX......


断电的时候注意排除U盘或磁盘在断电时损坏造成的数据损失,我一个装有重要数据的U盘就是在笔记本适配器损坏不能提供足够电压时损坏的,用了工厂化软件才恢复的,并且当时没有专门针对U盘的数据恢复软件,所有超过4K的文件全部损坏。多亏了有备份

#11


可以试试fastdb,和sqlite一样支持内存数据库。

#12


我在内存盘里面实测,当写入时强行关闭写入进程,原来的数据库文件没事,多出了一个无用的临时文件,可能是启用了事务的原因

#1


数据库的字符串查询一直都是老大难,整数则是强项。
如果整数是主键的话是最快的。追加也会很快,插入和删除也会比其他数据格式做主键快很多。

#2


震惊啊,用ID查询SQLite数据库速度竟然提升了数百倍_经验分享

#3


小伙伴们也都惊呆了 震惊啊,用ID查询SQLite数据库速度竟然提升了数百倍_经验分享

#4


呵呵呵呵,这SQLite还真是有特色,都出网络版了

#5


SQLite跨平台和网络结合都好用

#6


SQLite确实好用,就是不知道电脑(设备)频繁的断电上电会不会导致数据崩溃

#7


引用 6 楼 u011081622 的回复:
SQLite确实好用,就是不知道电脑(设备)频繁的断电上电会不会导致数据崩溃

這樣的答案最好自己驗證囉~ 不然您就實際對 SQLite 做個頻繁的斷電上電耐力測試吧~ 
偶在大學期間曾經與幾位同學對 MS SQL Server 幹過這樣的測試...放在三地點.三部 Server 各裝了四部硬盤的 RAID 伺服器並以網路同步數據的機制架構...所有遠端 Client 端自動並隨機以交易機制對 Server 作數據存取並紀錄...然後不預警以仿天災與仿電力設施故障對其中兩部 Server 給 OOXX......

#8


引用 6 楼 u011081622 的回复:
SQLite确实好用,就是不知道电脑(设备)频繁的断电上电会不会导致数据崩溃


目前转换了190多个数据库,约5个多G的数据,没有做过极端情况的测试,也发生过数据损失的情况

之前用Access数据库的时候是170多个库,使用数年,其中有一个损失了,有400多M,11万多条数据,损失不小

和Access相比SQLITE有诸多优点,也有不足,最明显的优点有两个,一是支持超长文本,二是数据库尺寸没有2G的尺寸限制

Access完美支持的文本长度实际上只有256个字符,所谓的备注和ole字段有明显缺点是不支持select查询

缺点也很明显,就是多任务不行,两个进程同时写一个库时必定会异常,Access也有约不超过10%的概率异常相对好很多

#9


上面打漏了一个字,是sqlite没有发生过数据损失的情况

#10


引用 7 楼 start8588 的回复:
Quote: 引用 6 楼 u011081622 的回复:

SQLite确实好用,就是不知道电脑(设备)频繁的断电上电会不会导致数据崩溃

這樣的答案最好自己驗證囉~ 不然您就實際對 SQLite 做個頻繁的斷電上電耐力測試吧~ 
偶在大學期間曾經與幾位同學對 MS SQL Server 幹過這樣的測試...放在三地點.三部 Server 各裝了四部硬盤的 RAID 伺服器並以網路同步數據的機制架構...所有遠端 Client 端自動並隨機以交易機制對 Server 作數據存取並紀錄...然後不預警以仿天災與仿電力設施故障對其中兩部 Server 給 OOXX......


断电的时候注意排除U盘或磁盘在断电时损坏造成的数据损失,我一个装有重要数据的U盘就是在笔记本适配器损坏不能提供足够电压时损坏的,用了工厂化软件才恢复的,并且当时没有专门针对U盘的数据恢复软件,所有超过4K的文件全部损坏。多亏了有备份

#11


可以试试fastdb,和sqlite一样支持内存数据库。

#12


我在内存盘里面实测,当写入时强行关闭写入进程,原来的数据库文件没事,多出了一个无用的临时文件,可能是启用了事务的原因