社区
MS-SQL Server
帖子详情
如何快速修改 表字段 的属性,前提是这个表里有上千万条数据。
wxylvmnn
2016-12-14 01:40:26
SQL2012
比如,字段A,现在定义是INT,我想给改成NVARCHAR(100)
最普通的做法是执行,
ALTER TABLE 表 ALTER column 字段A NVARCHAR(100);
但是现在的问题是,这个表中有上千万条数据,这么执行的话,速度慢的不行不行的了,刚才执行了近半个小时,没完事,被我强制终了了。
有什么好的方法。。。
...全文
726
6
打赏
收藏
如何快速修改 表字段 的属性,前提是这个表里有上千万条数据。
SQL2012 比如,字段A,现在定义是INT,我想给改成NVARCHAR(100) 最普通的做法是执行, ALTER TABLE 表 ALTER column 字段A NVARCHAR(100); 但是现在的问题是,这个表中有上千万条数据,这么执行的话,速度慢的不行不行的了,刚才执行了近半个小时,没完事,被我强制终了了。 有什么好的方法。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
卖水果的net
版主
2016-12-14
打赏
举报
回复
增加一列,批量更过来,比如每次 1000 行; 再清空原来的列,再修改类型,再批量更新来,最后删除刚才的表; PS:如是原来的列上有索引(主键),要先删除索引(主键),并且注意非空约束;
足球不是方的
2016-12-14
打赏
举报
回复
如果只是修改1列或者2列,可以增加1,2列,类型是需要改动的类型,把相应列的数据更新到此列,可以做个触发器,最后删除以前的列,吧新增的列改成以前列的列名
闭包客
2016-12-14
打赏
举报
回复
在数据量大的数据库里面执行耗时长的事务时,有一种分割成若干小事务的做法。 比如你在现有表的基础上创建一个新表,把列改成 NVARCHAR(100) 然后把数据以一万条为一个事务导入进去,这样即使某个事务意外中断,以后还可以接着以前的进度继续导入。 在数据完全导入完毕之后,把旧表改名,新表使用旧表的名称。
LongRui888
2016-12-14
打赏
举报
回复
建议还是在业务比较空闲时,特别是晚上操作吧,最好是停服维护时执行。 这个说白了这个就类似于一个update语句,更新几千万的数据,加上类型要变化,速度会比update 几千万数据更慢一些。
LongRui888
2016-12-14
打赏
举报
回复
在修改字段类型时,会检查每一列的值,进行类型转换,把值改为 字符串的值,而且会加上sch-m锁,防止其他会话来修改。 加上你的数据量非常大,所以速度非常慢。 首先,建议在alter 语句后面加上online,其次,别在现在改,最多也就是在晚上维护期间让运维改一下。 还有个办法就是,创建一张新表,把字段改为varchar,然后把原始表的数据导入到新的表里,最后把原始表truncate,把新表的表名改成原始表。 为了防止在这个期间有数据修改,可以先锁定整张表,方式表被修改。
学海无涯-回头是岸
2016-12-14
打赏
举报
回复
update T1 SET A=CAST(A AS NVARCHAR(100)) 再 ALTER TABLE 表 ALTER column 字段A NVARCHAR(100);
动态增加
数据
库
表
字段
项目组会议上讨论的关于不定
字段
数目的
数据
库
表
问题并没有结果,今天继续分析之后发现问题可能还更大。当时讨论的结果是可能采用四种技术: 动态增加
数据
库
表
字段
预留足够的空白
字段
,运行时作动态影射 用xml格式保存在单
字段
里 改列为行,用另外一个
表
存放定制
字段
【一】 现在我们来分析一下四种技术的优劣,不过首先可以排除的是第一点动态增加
字段
的方法,因为在实际操作时候几乎是不可能...
MySQL单
表
数据
量过千万,采坑优化记录,完美解决方案
问题概述 使用阿里云rds for MySQL
数据
库(就是MySQL5.6版本),有个用户上网记录
表
6个月的
数据
量近2000万,保留最近一年的
数据
量达到4000万,查询速度极慢,日常卡死。严重影响业务。 问题
前提
:老系统,当时设计系统的人大概是大学没毕业,
表
设计和sql语句写的不仅仅是垃圾,简直无法直视。原开发人员都已离职,到我来维护,这就是传说中的维护不了就跑路,然后我就是掉坑的那个!!! 我尝试解决该问题,so,有个这个日志。 方案概述 方案一:优化现有mysql
数据
库。优点:不影响现有业务,
SQL多
表
多
字段
比对方法
文章目录
表
-
表
比较整体思路找出不同
字段
的明细T1/T2两
表
ID相同的部分,是否存在不同NAME两
表
的交集与差集:判断两
表
某些
字段
是否相同两
表
的交集与差集:找出T2
表
独有的id
字段
-
字段
比较判断两个
字段
间一对多或多对一的关系证明id
字段
不是主键证明id, name
字段
不是联合主键
数据
准备
表
-
表
比较 整体思路 两张
表
条数一样 条数相同是
前提
,然后比较
字段
值才有意义 两
表
字段
值完全相同【两
表
所有
字段
的值相同】 两
表
所有
字段
union后,条数与另一张
表
条数一样 两
表
字段
值部分相同【两
表
部分
字段
的值相
MySQL- 一篇让你彻底了解多
表
的关联查询
前言 在
数据
库的设计中, 我们通常都是会有很多张
表
, 通过
表
与
表
之间的关系建立我们想要的
数据
关系, 所以在多张
表
的
前提
下, 多
表
的关联查询就尤为重要
数据
库设计范式 目前
数据
库设计有五种范式 , 一般我们
数据
库只需要满足前三项即可 第一范式 : 确保每列保持原子性 什么是原子性? 意思就是不可再分的,例如下 联系方式有 QQ,微信 , 电话等等 , 显然此列不满足原子性, 如果是单独的QQ或者电话等,则只有一个, 满足第一范式 第二范式 : 要有主键,要求其他
字段
都依赖于主键 为什么主
MySQL学习笔记
第1章
数据
库的介绍 1.1
数据
库概述 1.1.1 什么是
数据
库 存储
数据
的仓库. 其本质是一个文件系统,
数据
库按照特定的格式将
数据
存储起来,用户可以对
数据
库中的
数据
进行增加,
修改
,删除及查询操作。 1.1.2
数据
的存储方式
数据
保存在内存 优点:内存速度快 缺点:断电/程序退出,
数据
就清除了.内存价格贵
数据
保存在普通文件 优点:永久保存 缺点:查找,增加,
修改
,删除
数据
比较麻烦,效率低 \2.
数据
保存在
数据
库 优点:永久保存,通过SQL语句比较方便的操作
数据
库 1.2
MS-SQL Server
34,588
社区成员
254,588
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章