0

我有一个 ASP.NET MVC 4 应用程序,它使用美国或加拿大的数据库,具体取决于您所在的网站。

该程序允许您在各种过滤器上过滤作业数据,并将条件转换为具有大量表连接的 SQL 查询。数据被过滤然后分组/聚合。

但是,现在我有一个新要求:对加拿大服务器和美国服务器中的数据进行查询并进行一些分组和聚合(平均工资)。

现在,查找表在两个数据库服务器上都是重复的。

这是我想的方法:

在美国服务器上运行查询,在加拿大服务器上再次运行查询,然后合并内存中的数据。

这是一个用例:按平均工资对公司进行排名。在逻辑上,我只是过滤和查询一个工作表,并按公司和平均工资对结果进行分组。

还有其他方法可以做到这一点吗?我正在考虑使用夜间作业填充报告视图表并针对该报告表运行查询。老实说,查询本身并没有那么快。运行时,再次对加拿大数据库进行查询似乎会使网站速度变慢。

有任何想法吗?

4

1 回答 1

1

这里有很多变量。如果您没有太多数据,那么只要您让数据库完成尽可能多的工作(即分组、平均等),就可以对每个数据库进行查询和合并。

其他选项包括链接您的数据库并执行单个查询,但这有一些缺点,包括

  • 必须链接数据库
  • 与链接数据库相关的安全性
  • 单个查询将要求两个数据库都在线,而您很可能可以通过两个查询来解决这个问题

预定的预建表有一些优点和缺点,但可能与您拥有 2 个数据库的根本问题并不真正相关,而您可能应该拥有一个(也许,也许不是)。

如果查询速度很慢并且被多次调用,那么如果快照“在”时间的数据与您的业务需求相关且有用,则单个快照一次可以为您节省一些资源。

混合是创建一个“索引视图”,它可以让数据库为您创建一个运行平均值。这应该可以快速查询并且相对不显眼以保持最新状态。

希望其中一些有所帮助。

于 2013-04-20T07:29:38.200 回答