回答

收藏

将INT更改为BigInt

技术问答 技术问答 424 人阅读 | 0 人回复 | 2023-09-14

我有一个仓库表,里面有16吨数据。我有一些整数列。对于我们编写的每个查询,我们都必须将它们转换为BIGINT,因为SUM太大而无法容纳在INT中。
" R, e* c5 g# N: T现在,我们正在开发一个新的数据集市。因此,我们认为,为什么不将所有这些列都更改为BIGINT呢?对于新的查询集,我们不必担心。& ~( V6 @9 r& |% z' o8 Z' _
由于数据已经加载,因此我认为我将使用Management Studio并更改数据类型。但是我首先得到一个警告:1 F5 Q' \* V( f9 }# i
Saving Definition Changes to tables with large amounts of data could take a! Q: a' e1 P5 H2 S3 g) C; M1 f
considerable amount of time. While changes are being saved, table data will9 w1 y; K5 ?& o0 a6 {7 j+ W) b
not be accessible.( G6 i, r2 F4 z" Y
然后我得到一个错误:4 }. {) @2 k0 n. h( a% D0 u/ K
Timeout expired. The timeout period elapsed prior to completion of the
, L. C* Q  E% A0 _8 ^operation or the server is not responding.
" P8 e4 Z5 W) e6 b, ~- o我该如何解决?
+ i. z" Y" G8 h5 q' {! @                0 O& p5 r8 f* i3 z& F' h2 v3 X
解决方案:  a% [( |8 a7 Y) n6 l4 _
                4 l+ X1 T$ g: P3 v( g0 j8 R- M- b

% }9 f; w0 X% O6 [7 a7 L  A
* j8 U- V1 f) u+ j$ V' n1 J                如果这些列中的一列或多列没有约束(例如外键,索引,默认值,规则等),则您应该能够通过以下方法快速更改每一列, D6 c/ @: W- U" u. f+ u" M' U% ?
ALTER TABLE monster ALTER COLUMN MyIntCol1 bigint
, e- O) M" }& F* Z2 z) RManagement Studio的更改SQL很少是最高效的,并且倾向于使用临时表来进行任何修改现有列的操作。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则