10个库中有都有一个相同的表 TABLE
表结构
Id Name Type Date
如何把10个库中表的数据查询到同一张表重新设置主键列ID排序,并提高查询效率。设想将要查询数据的总量超过1000万或1亿,查询的库将要超过10万,网页查询中在网页超时前查询出结果。
11 个解决方案
#1
select * from(
select Name, Type ,Date from A1.dbo.表名
union all
select Name, Type, Date from A2.dbo.表名
union all
select Name, Type ,Date from A3.dbo.表名
...) order by id
select Name, Type ,Date from A1.dbo.表名
union all
select Name, Type, Date from A2.dbo.表名
union all
select Name, Type ,Date from A3.dbo.表名
...) order by id
#2
设想将要查询数据的总量超过1000万或1亿
这个估计得考虑分区表了。单纯的UNION ALL效率是不会很高的
这个估计得考虑分区表了。单纯的UNION ALL效率是不会很高的
#3
这个根本不行,是10个不同库中,10个相同名字的表啊
#4
分区表怎么做,求解?
#5
而且,经常不是为了查询单一记录,而是要查询几乎全表的记录,来计算总量之类的操作
#6
如果你没有大把的银子,那劝你去买十台普通的商用机,每台机上都装上SQLSERVER,每台机上装一个库,然后想要查询的那个客户端分别向这十个库发出查询请求,所得到的结果合并到客户端,再根据你的要求进行综合处理.
#7
这么大的数据量放到一起查询?光放到一起就要花不少时间了。
如果你们仅仅是需要查询这些数据的话,我建议你们专门做一个OLAP数据库用于统一存放这些数据,该数据库可以为读取性能做优化,每天定时使用SSIS包将当天的数据从其他数据库转移过来,然后所有的查询都对该数据库进行操作,这样不会影响到其他数据库在实际生产中的写操作。然后你们还可以使用SSRS生成专门的报表,再利用Microsoft Office SharePoint Server(MOSS)或者Microsoft Office PerformancePoint Server(PPS)这些软件进行后期开发,组建你们自己的BI模块。
如果你们仅仅是需要查询这些数据的话,我建议你们专门做一个OLAP数据库用于统一存放这些数据,该数据库可以为读取性能做优化,每天定时使用SSIS包将当天的数据从其他数据库转移过来,然后所有的查询都对该数据库进行操作,这样不会影响到其他数据库在实际生产中的写操作。然后你们还可以使用SSRS生成专门的报表,再利用Microsoft Office SharePoint Server(MOSS)或者Microsoft Office PerformancePoint Server(PPS)这些软件进行后期开发,组建你们自己的BI模块。
#8
可以同时对对个数据库进行查询吗?求解
#9
那不等于冗余了1倍的数据量?分区表该怎么做啊?
#10
用分區表,設法將10個同名表歸為一個庫下的表(需要修改一下前端程序),
然後對於這一個庫下的"總表"進行分區, 記得不同分區對應到不同文件組,
不同文件組對應到不同磁盤分區或磁盤陣列, 這樣性能會比現在好很多.
然後對於這一個庫下的"總表"進行分區, 記得不同分區對應到不同文件組,
不同文件組對應到不同磁盤分區或磁盤陣列, 這樣性能會比現在好很多.
#11
噢,我再去研究研究分区表
#1
select * from(
select Name, Type ,Date from A1.dbo.表名
union all
select Name, Type, Date from A2.dbo.表名
union all
select Name, Type ,Date from A3.dbo.表名
...) order by id
select Name, Type ,Date from A1.dbo.表名
union all
select Name, Type, Date from A2.dbo.表名
union all
select Name, Type ,Date from A3.dbo.表名
...) order by id
#2
设想将要查询数据的总量超过1000万或1亿
这个估计得考虑分区表了。单纯的UNION ALL效率是不会很高的
这个估计得考虑分区表了。单纯的UNION ALL效率是不会很高的
#3
这个根本不行,是10个不同库中,10个相同名字的表啊
#4
分区表怎么做,求解?
#5
而且,经常不是为了查询单一记录,而是要查询几乎全表的记录,来计算总量之类的操作
#6
如果你没有大把的银子,那劝你去买十台普通的商用机,每台机上都装上SQLSERVER,每台机上装一个库,然后想要查询的那个客户端分别向这十个库发出查询请求,所得到的结果合并到客户端,再根据你的要求进行综合处理.
#7
这么大的数据量放到一起查询?光放到一起就要花不少时间了。
如果你们仅仅是需要查询这些数据的话,我建议你们专门做一个OLAP数据库用于统一存放这些数据,该数据库可以为读取性能做优化,每天定时使用SSIS包将当天的数据从其他数据库转移过来,然后所有的查询都对该数据库进行操作,这样不会影响到其他数据库在实际生产中的写操作。然后你们还可以使用SSRS生成专门的报表,再利用Microsoft Office SharePoint Server(MOSS)或者Microsoft Office PerformancePoint Server(PPS)这些软件进行后期开发,组建你们自己的BI模块。
如果你们仅仅是需要查询这些数据的话,我建议你们专门做一个OLAP数据库用于统一存放这些数据,该数据库可以为读取性能做优化,每天定时使用SSIS包将当天的数据从其他数据库转移过来,然后所有的查询都对该数据库进行操作,这样不会影响到其他数据库在实际生产中的写操作。然后你们还可以使用SSRS生成专门的报表,再利用Microsoft Office SharePoint Server(MOSS)或者Microsoft Office PerformancePoint Server(PPS)这些软件进行后期开发,组建你们自己的BI模块。
#8
可以同时对对个数据库进行查询吗?求解
#9
那不等于冗余了1倍的数据量?分区表该怎么做啊?
#10
用分區表,設法將10個同名表歸為一個庫下的表(需要修改一下前端程序),
然後對於這一個庫下的"總表"進行分區, 記得不同分區對應到不同文件組,
不同文件組對應到不同磁盤分區或磁盤陣列, 這樣性能會比現在好很多.
然後對於這一個庫下的"總表"進行分區, 記得不同分區對應到不同文件組,
不同文件組對應到不同磁盤分區或磁盤陣列, 這樣性能會比現在好很多.
#11
噢,我再去研究研究分区表