sql-server - SQL Server 中 ALTER COLUMN 语句的幕后操作
问题描述
我正在使用以下查询更改具有大约 1 亿条记录的表的列数据类型:
ALTER TABLE dbo.TARGETTABLE
ALTER COLUMN XXX_DATE DATE
当我从有效数据源插入原始日期时,列值的日期格式正确。
但是,查询已经运行了很长时间,即使我尝试取消查询,它似乎也需要很长时间。
谁能解释执行 ALTER TABLE STATEMENT 时 SQL Server 幕后发生的事情以及为什么需要这些资源?
解决方案
执行此操作的另一种方法如下:
- 向表中添加新列 - [_date] 日期
- 使用批量更新,您可以将值从旧列传输到新列,而不会阻止其他用户的表。
然后在一个事务中执行以下操作:
- 更新完成后插入的所有新值
- 删除旧列
- 重命名新列
请注意,如果您在此字段上有索引,则需要在删除旧列之前删除它,并在重命名新列之后创建 if。
推荐阅读
- python - 如何使用用户提供的城市并使用它进行回复?使用如果
- php - 如何在 json 索引中对 JsonArray 结果内容进行分组
- javascript - 如何确保在 HTTP 拦截器之后发生在 observable 上的操作符?
- java - 无法解析导入 - Visual Studio Code for Java
- html - 如何向屏幕阅读器指示内容是内联可编辑的?
- javascript - Safari 上的 onclick 链接事件问题
- ada - 使用所有默认值初始化记录类型的常量变量
- tensorflow - PyInstaller 是否包含 CUDA
- checkbox - 在分页 vue-bootstrap 中保持复选框状态
- javascript - 为什么我的样式组件没有按照使用 GatsbyJS 的指定呈现?