提问,跨服务器的数据库某个表做了水平切分后,怎么分页?和求数据总量count()

upshania 2012-08-14 09:38:13
提问,数据库某个表做了水平切分后,怎么分页?和求数据总量count()

一、服务器A

用户表:Member

ID Name Password CreateTime
1 张三 123456 2001-11-11


二、服务器B

用户表:Member

ID Name Password CreateTime
1 李四 123456 2012-11-12





我现在想计算 服务器A和服务器B的总数据量,以及 分页的时候怎么分好呢?在程序中合并数据好,还是在SQL中合并数据好?像分页有的时候 某个页是包含A和B服务器的数据的,要怎么分才好?

如服务器A用户表有13条数据,服务器B用户表有15条数据,如果按每页显示10条数据的话,意味着第二页 A服务器有3条数据,B服务器有7条数据,这部份怎么处理比较好呢?是将数据库的数据先同步到统一的一个只读服务器中,然后SELECT只读服务器用户表来分页好,还是在程序中,算到第二页的时候,自动串连好?



还有一个很重要的问题,怎么给两个服务器里的用户表按时间排序呢?
如果采用同步数据到一个只读服务器中,合并两张表,那是可以ORDER BY CREATETIME的,但是如果两个表都比较大,而且时实都在增量数据,那意味着也是要有一个时间周期同步,可能会造成不是精确的数据,另外,如果又合并数据,有违我的分表初衷啊。本身两个表的数据量都比较大所以才分表的。

























...全文
270 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
haitao 2012-08-14
  • 打赏
  • 举报
回复
先建立 链接服务器,就可以把跨服务器的访问写在一个sql里
只是执行效率还是不高
要高,最好搬到同一个数据库
以学习为目的 2012-08-14
  • 打赏
  • 举报
回复
同意楼上的观点,还是在数据库中合并数据吧。
人生无悔 2012-08-14
  • 打赏
  • 举报
回复

--数据库中吧,如果程序中你岂不是要搞两个连接,然后还要合并记录,然后才去分页
select * from (
select ID,Name,Password,CreateTime from [Member]
union all
select ID,Name,Password,CreateTime from B.[数据库名称]..[Member]) t
--此处t就是一个正常表了
--要先在A服务器sp_addlinkedserver添加B服务器

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧