4

我已经写了这个帖子,因为我已经解决了这个问题整整三天了!

基本上,我有一个程序可以收集一个大的 CSV 文件并将其用作本地 SQLCE 数据库的输入。对于这个 CSV 文件中的每一行(它代表某种对象,我们称之为“狗”),我需要知道这条狗是否已经存在于数据库中。如果它已经存在,请不要将其添加到数据库中。如果不存在,请在数据库中添加一个新行。

问题是,每个查询大约需要 60 毫秒(一开始,当数据库为空时),当数据库大约 1000 行大时,它会上升到大约 80 毫秒。当我必须通过 1000 行(我认为这并不多)时,这大约需要 70000 毫秒 = 1 分 10 秒(只是为了检查数据库是否是最新的),太慢了!考虑到这个数量有一天可能会超过 10000 行,我不能指望我的用户在他的数据库同步之前等待超过 10 分钟。我尝试改用编译后的查询,但这并不能提高性能。

我正在搜索的字段是一个字符串(它是主键),并且它已被索引。

如果有必要,我可以用代码更新这个线程,这样你就可以看到我做了什么。

4

1 回答 1

3

Windows Phone 上的 SQL CE 不是最快的生物,但您可以对其进行优化:

本文涵盖了您可以做的许多事情:WP7 Local DB Best Practices

他们还提供了一个可以下载的 WP7 项目,以便您可以使用代码。

在本文之上,我建议将您的 PK 从字符串更改为 int;字符串比整数占用更多空间,因此您的索引会更大并且需要更多时间从独立存储中加载。当然,在 SQL Server 中搜索字符串比搜索整数/长整数要慢。

于 2012-10-09T14:52:10.463 回答