sqlserver,不同数据库,两个相同表,表大小差一倍

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver,不同数据库,两个相同表,表大小差一倍相关的知识,希望对你有一定的参考价值。

SqlServer里,建立两个数据库,分别各建一个表,里面的数据也一样,但是数据表的大小相差一倍,为什么
查询语句:sp_spaceused table_name
结果data字段(表中数据大小)也相差一倍,这是为什么

数据库的初始大小,以及增长率的区别.
数据库的文件的大小并不等同于数据的大小,表也是一样的.
假定原始表,前后累计 insert 一千万条记录有,后来删除了9百万,然后将剩余的1百万导入到 新的表中.
此时,原始表的大小就远大于新的表.当表空间不够的时候,他会自动 扩容,当数据减少时,他并不会自动收缩.追问

我在数据库查询:sp_spaceused table_name
查询表格占用空间大小,索引大小,数据空间大小等,结果不光表格大小差一倍,就连数据大小也差一倍,这是为什么

参考技术A 压缩问题吧

sqlserver 两个表差异合并 除了insert.. select.. 外还有啥最好的办法吗?

tb1 和tb2 字段是相同的~ 数据内容有些相同有些不同
我需要合并两个表的数据,但是重复的不需要合并。
除了insert.. select.. 外还有什么最好的办法吗?
如果答案很优越 我追加到200分~~ 谢谢各位~

你好,可以将两个表中的数据提出来(重复的过滤)写入一个临时表中,清空这两个表,再将临时表的数据回写入这两个表里面。为防出错,请先备份数据库再操作。
如:
第一步:select * from 数据库名1..表名1 into #临时表名
第二步:insert into #临时表名 (字段名1,字段名2……) (select a.字段名1,a.字段名2…… from 数据库名2..表名2 a,数据库名1..表名1 b where 数据库名2..表名2.主键字段名<>数据名1..表名1.主键字段名 )
第三步:delete from 数据库名1..表名1
第四步:delete from 数据库名2..表名2
第五步:insert into 数据库名1..表名1 from #临时表
第六步:insert into 数据库名2..表名2 from #临时表
第七步:drop table #临时表

注:如果两个表中没有主键,你只有在第二条语句中where 项中一个字段一个字段地添加条件判断了。 18290希望对你有帮助!

参考资料:. fxeighh

参考技术A select col1 from tb1
union all
select col1 from tb2
参考技术B insert.. select.. 这么好用 为什么不用

以上是关于sqlserver,不同数据库,两个相同表,表大小差一倍的主要内容,如果未能解决你的问题,请参考以下文章

2个雪花表,数据相同,大小不同

sqlserver 两个表差异合并 除了insert.. select.. 外还有啥最好的办法吗?

怎么用SQL比对两表

连接两个不同表中具有相同 UnitOfMeasureId 的行

sqlserver创建视图

SQLServer两张表筛选相同数据和不同数据