首页 新闻 会员 周边

跨服务器跨数据库查询制作报表

0
悬赏园豆:60 [已解决问题] 解决于 2018-03-07 14:43

需求如题, 解决思路是: 将 A 数据库服务器的 OA库中的数据查询出来,存放到 B 数据库服务器上的临时表(或建普通表),再从B数据库服务器上的临时表(或普通表)中读取数据,注意,要考虑既要从 A 上读取又要从 B 上同时读取数据的情况。(附:A 数据库服务器的 OA库中,要取的数据量都在 50W 以下,且都是MS SQLSERVER)
请问, 综合考虑,是用临时表实现好 还是能用 普通表实现好? 或者还是有其他什么更好的解决方案?

wqsky的主页 wqsky | 初学一级 | 园豆:120
提问于:2017-10-12 14:37
< >
分享
最佳答案
0

综合考虑,还是测试才知道。

收获园豆:35
爱编程的大叔 | 高人七级 |园豆:30839 | 2017-10-12 14:51

 那只考虑查询性能是普通表最快呢? 

wqsky | 园豆:120 (初学一级) | 2017-10-12 14:52

@wqsky: 问题不在于普通表还是临时表,而是:如果你如果查询报表是临时从A服务器取50W条数据到B服务器,这个过程会让用户等得蛋痛。

既然是个报表,那必然是根据时间段对业务数据进行统计,那为什么不能在查询报表前事先把A服务器的数据拿到服务器B中呢?甚至让报表事先就生成在B服务器的物理表中,要用的时候直接查这张表?

西漠以西 | 园豆:1675 (小虾三级) | 2017-10-12 17:44

@西漠以西: 当然是先抓取过来的,是我没说清楚

wqsky | 园豆:120 (初学一级) | 2017-10-13 08:56

@西漠以西: 当然是先抓取过来的,是我没说清楚, 正在用物理表实现, 

wqsky | 园豆:120 (初学一级) | 2017-10-13 08:58
其他回答(2)
0

  报表这个东西一般不会是实时显示的,都是定期的,比如按天、月、季度、年这样的。如果是数据量比较大的多库查询,或者是多个库组合数据出报表,可以在数据生成时,直接将数据插入到报表库,可以是A、B或者单独建一个C。或者建一个作业,来定期的生成报表数据。

  因为数据量一旦很大,实时出报表或者联合多个表做查询,都会很慢,用户体验很不好。

  至于性能问题,建好索引就慢不到哪去,而且固定报表的话,可以提前生成好,直接显示给用户就可以了。避免多表联合查询出数据。

收获园豆:25
迷路中的路人甲 | 园豆:93 (初学一级) | 2017-10-13 08:35

当然是先抓取过来的,是我没说清楚, 正在用物理表实现

支持(0) 反对(0) wqsky | 园豆:120 (初学一级) | 2017-10-13 08:58

打算写定时服务去定时同步报表数据到 B 库中的物理表

支持(0) 反对(0) wqsky | 园豆:120 (初学一级) | 2017-10-13 10:10
0

针对读取,建议可以用一个视图,写语句分别读取A数据库和链接到B数据库的数据。 

码码乎乎 | 园豆:195 (初学一级) | 2018-07-17 17:50

已经用物理表把数据同步过来,再关联查询实现了此功能

支持(0) 反对(0) wqsky | 园豆:120 (初学一级) | 2018-07-17 18:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册