首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查列大小+ Alter table或直接Alter table

检查列大小+ Alter table或直接Alter table
EN

Stack Overflow用户
提问于 2012-07-05 16:11:03
回答 2查看 276关注 0票数 0

我们有一个获取表列列表和每个列应该具有的大小(varchar类型)的进程,并对它们进行修改,以确保它具有定义的大小。

在实际实现中,我们直接对列表中的每个列执行alter table ...

如果我们先检查列大小是否与正确的大小不同,然后再执行alter table,会不会运行得更快?

据统计,有4000左右的表列需要检查,最多有20列需要更正……

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-05 18:16:05

最后,我们在alter table之前实现了检查,在需要执行alter命令的情况下,处理速度明显更快

票数 0
EN

Stack Overflow用户

发布于 2012-07-05 16:18:05

编辑:反映注释:

哪个更快取决于修改列的操作的成本,以及表中需要更改的列的数量。例如,更改一列空值的开销不是很大。但是,如果您有大量的数据和表中的许多列,那么从一个表复制到新表可能会更好。根据数据库的指标来决定这一点,并且并不总是有对错的anseer。

您可以创建一些动态sql来创建sql,以改变大小不正确的列的长度。这一定是最快的方法。

类似于:

代码语言:javascript
复制
SELECT  
     'some decision logic...' -- substitute values as needed 
FROM 
       INFORMATION_SCHEMA.COLUMNS
WHERE 
        ISNULL(CHARACTER_MAXIMUM_LENGTH, 5) <> 5 
    AND DATA_TYPE = 'NVARCHAR'

您还可以添加要考虑的指标,如表大小、数据大小、列数(分组依据)等。

Sql Server已经存储了所有这些元数据,您只需查询它即可。在定制表中复制此信息并在其上运行游标似乎是错误的。我想您提到的问题是,复制此信息可能会导致过时的数据,而sql server元数据将始终是最新的。为了使其更容易,您可以在元数据上创建视图,以使其易于使用。但这是一个不同的问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11340280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档