0

数据库中有一个包含 3 列 [StringColumn]、[FloatColumn1]、[FloatColumn2] 的表。此表中的所有行都是不同的,没有重复。

它有大约 100 万条记录,每天它会收到大约 10-50 条新记录。

在客户端,当应用程序启动时,它通过 Web 服务调用从该表中下载所有记录(用于查找字段),大约 85Mb,这非常糟糕。

仅获取本地数据缓存和数据库之间差异的最佳方法是什么?

如果我在创建记录时有一个时间戳列,那么这将非常容易,但是只有这 3 列我不确定什么是最好的方法。

欢迎任何想法。

4

2 回答 2

0

您每天刷新的第二张桌子的问题是客户可能没有刷新。

如果数据没有发生变化,那么一个简单的身份列。

客户端只是抓取数据>客户端的最大身份。

于 2013-06-19T21:46:52.733 回答
0

好吧,如果您真的无法以任何方式(表架构、触发器等)编辑 DDL,那么您的目标应该是限制数据传输(您似乎意识到了这一点,引用了 85Mb 的数字)。

一种方法是在比较完整数据集之前进行范围查询。

例如,在您的代码中,您知道 [FloatColumn1] 介于 0.0 和 19.999、20.0 和 29.999 等之间的记录数。询问 SQL Server 是否在每个范围内具有相同数量的记录将是微不足道的。对于具有不同计数的范围,您可以优化搜索,直到您可以在该范围内快速进行完整比较(实验和基准测试是确定最佳最小范围大小的最佳方法)。您还可以选择对其他列的组合使用相同的想法(取决于您的数据的另一种选择)。

使用 LINQ,实现上述内容的代码看起来不会太难看。

于 2013-06-19T21:38:17.950 回答