需求如题, 解决思路是: 将 A 数据库服务器的 OA库中的数据查询出来,存放到 B 数据库服务器上的临时表(或建普通表),再从B数据库服务器上的临时表(或普通表)中读取数据,注意,要考虑既要从 A 上读取又要从 B 上同时读取数据的情况。(附:A 数据库服务器的 OA库中,要取的数据量都在 50W 以下,且都是MS SQLSERVER)
请问, 综合考虑,是用临时表实现好 还是能用 普通表实现好? 或者还是有其他什么更好的解决方案?
综合考虑,还是测试才知道。
那只考虑查询性能是普通表最快呢?
@wqsky: 问题不在于普通表还是临时表,而是:如果你如果查询报表是临时从A服务器取50W条数据到B服务器,这个过程会让用户等得蛋痛。
既然是个报表,那必然是根据时间段对业务数据进行统计,那为什么不能在查询报表前事先把A服务器的数据拿到服务器B中呢?甚至让报表事先就生成在B服务器的物理表中,要用的时候直接查这张表?
@西漠以西: 当然是先抓取过来的,是我没说清楚
@西漠以西: 当然是先抓取过来的,是我没说清楚, 正在用物理表实现,
报表这个东西一般不会是实时显示的,都是定期的,比如按天、月、季度、年这样的。如果是数据量比较大的多库查询,或者是多个库组合数据出报表,可以在数据生成时,直接将数据插入到报表库,可以是A、B或者单独建一个C。或者建一个作业,来定期的生成报表数据。
因为数据量一旦很大,实时出报表或者联合多个表做查询,都会很慢,用户体验很不好。
至于性能问题,建好索引就慢不到哪去,而且固定报表的话,可以提前生成好,直接显示给用户就可以了。避免多表联合查询出数据。
当然是先抓取过来的,是我没说清楚, 正在用物理表实现
打算写定时服务去定时同步报表数据到 B 库中的物理表
针对读取,建议可以用一个视图,写语句分别读取A数据库和链接到B数据库的数据。
已经用物理表把数据同步过来,再关联查询实现了此功能