Windows Phone 中的 SQLCE 性能很差
Posted
技术标签:
【中文标题】Windows Phone 中的 SQLCE 性能很差【英文标题】:SQLCE performance in windows phone very poor 【发布时间】:2012-10-05 05:56:15 【问题描述】:我已经写了这个帖子,因为我已经解决了这个问题整整三天了!
基本上,我有一个程序可以收集一个大的 CSV 文件并将其用作本地 SQLCE 数据库的输入。 对于这个 CSV 文件中的每一行(它代表某种对象,我们称之为“狗”),我需要知道这条狗是否已经存在于数据库中。 如果它已经存在,请不要将其添加到数据库中。 如果不存在,则在数据库中添加一个新行。
问题是,每个查询大约需要 60 毫秒(一开始,当数据库为空时),当数据库大约 1000 行大时,它会上升到大约 80 毫秒。 当我必须通过 1000 行(我认为这并不多)时,这大约需要 70000 毫秒 = 1 分 10 秒(只是为了检查数据库是否是最新的),太慢了!考虑到这个数量有一天可能会超过 10000 行,我不能指望我的用户在他的数据库同步之前等待超过 10 分钟。 我尝试改用编译后的查询,但这并没有提高性能。
我要搜索的字段是一个字符串(也就是主键),并且已经被索引了。
如果有必要,我可以用代码更新这个线程,这样你就可以看到我做了什么。
【问题讨论】:
【参考方案1】:Windows Phone 上的 SQL CE 并不是最快的,但您可以对其进行优化:
本文介绍了您可以做的许多事情:WP7 Local DB Best Practices
他们还提供了一个可以下载的 WP7 项目,以便您可以使用代码。
在本文的顶部,我建议将您的 PK 从字符串更改为 int;字符串比整数占用更多空间,因此您的索引会更大,并且需要更多时间从独立存储中加载。当然,在 SQL Server 中搜索字符串比搜索整数/长整数要慢。
【讨论】:
以上是关于Windows Phone 中的 SQLCE 性能很差的主要内容,如果未能解决你的问题,请参考以下文章
如何将图像存储在 Windows Phone 的 SqlCe 数据库中
Windows Phone 7 中的性能监控(电源和 FPS)
windows phone 中 textBox1_TextChanged 的性能变慢