打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C#操作Sqlite内存数据库的困扰

C#操作Sqlite内存数据库的困扰

0
悬赏园豆:20 [已解决问题] 浏览: 1777次

有一个项目,服务端用java+oracle,客户端用C#做的winform程序,sqlite作为本地数据库(将需要的数据从服务器数据库同步下载到本地数据库,供程序查询使用)。
随着业务查询的需求复杂度增加,发现sqlite的查询效率变低!
听说sqlite支持将本地数据库文件 读取为内存数据库,查询效率会提升数倍,可是真的不知道从哪里下手,希望有高手给个思路:

C#怎么读取本地sqlite数据库文件为内存数据库,怎么查询?感谢!

飞扬Design | 初学一级 | 园豆:58
提问于:2013-12-26 17:49
最佳答案
0

用特定的连接字符串就行了。

Data Source=:memory:;Version=3;

然后不关闭连接,就可以使用该内存数据库了。关闭后,内存数据库就没了。只能重新开连接。

为了保持连接,可以使用static SqliteConnection

收获园豆:10
幻天芒 | 高人七级 |园豆:30526 | 2013-12-26 19:07

谢谢,可是我需要把本地数据库读取为内存数据库,怎么弄呢?我的数据都在数据库文件里

飞扬Design | 园豆:58 (初学一级) | 2013-12-26 19:13

@飞扬Design: 建表语句,开一个本地文件的连接,然后写入到内存。

幻天芒 | 园豆:30526 (高人七级) | 2013-12-26 19:15

@幻天芒: 建两个数据库连接?能贴点代码么?万分感谢!!!!

飞扬Design | 园豆:58 (初学一级) | 2013-12-26 19:20

@飞扬Design: 

var conMemory=new SqliteConnection("");//内存数据库连接var conFile=new SqliteConnection("");//文件数据库连接//然后读取conFile下的每个表的数据,批量写入到conMemory中var tableNames=new[]{"table1,"table2"};foreach(var tableName in tableNames){    //开启事务    this.InsertData(conMemory,conFile,tableName);//读取conFile下的tablaName表的数据,写入到conMemory中,大概思路就是这样。我暂时没找到更快速的直接附加方式,呵呵。}
幻天芒 | 园豆:30526 (高人七级) | 2013-12-27 11:57
其他回答(1)
0

查询效率,好几个方面影响。不单单是文件、或者内存存储影响。而且我认为.sqlite.只要不是单表几十万的数据量,影响不会太大。

首先从应用和设计上去优化一下,应用索引、关联、试图、数据建模要关注单标数据量的分切。

其次、编码层面的优化,注意编码中性能的损耗。比如.避免全表扫描、查询最好应用索引字段等.

最后,在使用sqlite、和代码编写层次没有太大的改观的情况下,尝试内存存储。

收获园豆:10
邢少 | 园豆:11103 (专家六级) | 2013-12-27 09:17

谢谢你的建议,现在的问题是 单表数据量也不小了,主要想尝试一下 看看内存数据库读取效率能否提高得比较明显,如果有这方面的代码,烦请贴一点给我,谢谢了

飞扬Design | 园豆:58 (初学一级) | 2013-12-27 09:22

@飞扬Design: 我也只是知道可以这么做,同时有c++之前使用内存存储的,c#的没有用过,持续关注答案。google一下吧.应该不少


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
常用内存数据库介绍(八) - titan - JavaEye技术网站
iOS --database--sqlite(数据库)
IOS FMDB 获取数据库表和表中的数据
常用内存数据库介绍(六)
HBuilder开发中的Websql增删改查操作
HTML5项目笔记5:使用HTML5 WebDataBase设计离线数据库
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服