首页新闻招聘找找看知识库

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

0
悬赏园豆:60 [待解决问题]

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

wqsky的主页 wqsky | 初学一级 | 园豆:119
提问于:2017-10-12 14:37
< >
分享
所有回答(2)
0

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

爱编程的大叔 | 园豆:25681 (高人七级) | 2017-10-12 14:51

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

支持(0) 反对(0) wqsky | 园豆:119 (初学一级) | 2017-10-12 14:52

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

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

支持(0) 反对(0) 西漠以西 | 园豆:637 (小虾三级) | 2017-10-12 17:44

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

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

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

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

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

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

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

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

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

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

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

支持(0) 反对(0) wqsky | 园豆:119 (初学一级) | 2017-10-13 10:10
   您需要登录以后才能回答,未注册用户请先注册