Oledb 查询性能慢

Oledb 查询性能慢,oledb,sql-server-ce-4,Oledb,Sql Server Ce 4,在我的应用程序中,我在几个不同的机器上运行一些非常大的数据库,分别为500MB和300MB 从硬件角度来看,机器的配置是相同的 我正在使用SQLServerCE4.0作为我的DBMS 性能关键查询已编制索引以提高其性能 问题是,在其中一台机器上,我观察到查询性能异常缓慢。从查询的角度来看,这通常发生在长时间不活动之后。在我进行了几次大约7-8次的查询之后,缓慢的性能消失了 奇怪的是,在另一台机器上并没有出现这种初始查询性能缓慢的情况 这两台机器之间的唯一区别是数据库中包含的数据 我怀疑数据在速度

在我的应用程序中,我在几个不同的机器上运行一些非常大的数据库,分别为500MB和300MB

从硬件角度来看,机器的配置是相同的

我正在使用SQLServerCE4.0作为我的DBMS

性能关键查询已编制索引以提高其性能

问题是,在其中一台机器上,我观察到查询性能异常缓慢。从查询的角度来看,这通常发生在长时间不活动之后。在我进行了几次大约7-8次的查询之后,缓慢的性能消失了

奇怪的是,在另一台机器上并没有出现这种初始查询性能缓慢的情况

这两台机器之间的唯一区别是数据库中包含的数据

我怀疑数据在速度较慢的机器上的分布在某种程度上降低了索引的有效性,并且SQL Server CE必须以比在其他速度较快的机器上更重要的方式重新平衡索引

我注意到的一点是,当查询速度非常慢时,磁盘活动会显著增加,与读取数据库相对应的进程会显示读取字节的峰值

这不会发生在另一台机器上

有人知道我会如何从根本上解决这个问题吗

< >我的代码是用C++编写的,使用ATL/OLDEB API来操纵数据库。
更新:我的性能分析活动表明,慢的不是查询本身,而是处理返回的行集需要一段时间。对于返回的每一行,我查询另一个数据库中的相关数据。我知道这不是正确的方法,但性能问题只发生在一台机器上。我注意到的一点是,当我在其他线程中的同一数据库上发生其他不相关的查询时,这些不相关的查询将暂停显示性能问题的查询。

仅供参考,CE不推荐使用。你应该考虑使用Express或LoalDB。这是计划——但这不能在1天内完成。昨天,我们有愤怒的客户希望解决这个问题。