【问题标题】:Windows CE 6.0 + SQL Server Compact 3.5 = Slow Data AccessWindows CE 6.0 + SQL Server Compact 3.5 = 慢速数据访问
【发布时间】:2016-02-18 15:36:27
【问题描述】:

我使用的是装有 Windows Embedded CE 6.0 + SQL Server Compact 3.5 的移动 Motorola MC-2180 设备。数据库位于金士顿 8 GB 10 级存储卡上。

问题: 数据库有 1000000 行和一个聚簇索引和一个非聚簇索引。当我第一次对数据库使用查询时(查询使用索引) - 查询运行速度非常慢(约 120 分钟)。

是否可以加速或组织数据以使查询执行时间更快(约 5 秒)?

总而言之:我们希望使用此设备使用其自己的数据库产品进行库存盘点。网络访问不是。

谢谢!

【问题讨论】:

  • 您好 Maxim,欢迎来到 StackOverflow!你都尝试了些什么?我们可以看到一些代码和示例数据吗?当您不知道数据库和/或查询到底做了什么时,很难优化它
  • 您的数据库是否来自桌面系统? “第一次”是什么意思?
  • 数据库是一个带有字段的简单表(IdRow int not null,IdBarcode int not null,Name char(100) not null)。 IdBarcode 上的聚集 IdRow 索引和非聚集索引。该表有 1000000 条记录。当您第一次从移动设备访问表(select * from myTable where IdBarcode = 123)以缓存索引时,这是一个很长的时间(从 2 小时开始)。这种情况是不可接受的。如何加快索引缓存速度?

标签: optimization sql-server-ce windows-ce motorola data-access


【解决方案1】:

很遗憾,客户不打算在不久的将来购买更高效的设备。

设备的内存是有限的。数据库大小约为 2 GB,每年将增加约 500 MB。因此决定 raspolojit 将数据库放在 microSD(10 类)上。

在您放置的日期尝试以下算法:

  1. 所有1000000行以上的表都划分为行数不超过500000的表。

  2. 在移动设备功能缓存的软件中实现(对数据库中的每个表进行一次查询)。这虽然耗时,但只需要一次,并且在快速访问缓存数据之后。

  3. 使用移动设备执行与远程数据库的同步(以向移动设备的数据库添加新信息)。在这种情况下,不需要缓存 - 数据库直接在设备上更新。

【讨论】:

    【解决方案2】:

    您使用的设备没有很好的硬件配置(它只有 128 到 256 MB 的 RAM)。最好使用 MC45MC3100 系列 之类的产品。 无论如何,您可能想尝试将 .sdf 文件移动到设备的 ROM 内存中,这可能会加快您的时间,但忘记将其设置为 5 秒。

    有没有想过 .sdf 是否必须包含所有这些 1Mi 行。你不能分离数据吗?

    如果您想交流知识,我很乐意传递我的经验!

    【讨论】:

    • 目前我对问题的回答中描述的情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    相关资源
    最近更新 更多