抱SQL SERVER大腿之我爱用视图

为解决大型数据库备份与同步难题,本文介绍一种利用视图进行表转移的方法,通过将巨型表迁移到新数据库并创建同构视图,实现代码无缝迁移及高效维护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL SERVER大腿之我爱用视图

左直拳

我们拥有一个巨大的表,两千多万条记录。也许在行家眼里,两千多万条记录顶多算条毛,不过这条毛也忒粗壮了一点:我们的数据库占用的空间已经达到<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="5" unitname="g"><span lang="EN-US" style="FONT-SIZE: 12pt"><font face="Times New Roman">5G</font></span></chmetcnv>多了。不要以为是日志文件在搞鬼,日志文件可以自动收缩的,最多不超过<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="100" unitname="m"><span lang="EN-US" style="FONT-SIZE: 12pt"><font face="Times New Roman">100M</font></span></chmetcnv>。

这样子就给我们备份、同步带来很大的麻烦。备份、压缩、下载,谁见谁害怕。

昨天想了个办法,将这个巨无霸分出去了。分到了另一个数据库上。虽说有这么多记录,不过这些记录并不是太重要,如果放在一个分布式的系统里面看,它没有同步的必要。

思想如下:

1、将大表转移到另一个数据库上

2、原有数据库建立一个视图,相同结构,相同名字

由于该视图是单表视图,结构跟表又一致,名字也跟表名一样,那么操作这个视图,无论是查询、插入、更新或删除,都跟直接操作这个表没什么区别。这样代码也无须做任何的修改。平滑过渡。

该表上建立的索引,视图也一样的使用。

以前我见过有人为了避免某个表过大,采用的方法是建立12个结构一样的表,每个月用一个。当时就想,这种做法好是好,但代码岂不是烦死了。现在想起来,查询的时候,可以使用视图将12个表用 UNION ALL 结合起来,当一个表用。

视图在分布式数据库中使用应该很方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值