SQLCE在windows手机中的表现非常差

时间:2012-10-05 05:56:15

标签: windows-phone-7 sql-server-ce

我正在编写这个帖子,因为我已经整整三天打了这个问题了!

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

本文介绍了您可以执行的一些操作:WP7 Local DB Best Practices

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

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