回答

收藏

将INT更改为BigInt

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

我有一个仓库表,里面有16吨数据。我有一些整数列。对于我们编写的每个查询,我们都必须将它们转换为BIGINT,因为SUM太大而无法容纳在INT中。
1 f7 v! W- ?) ]7 V现在,我们正在开发一个新的数据集市。因此,我们认为,为什么不将所有这些列都更改为BIGINT呢?对于新的查询集,我们不必担心。
; @% j) u5 M+ `$ V! F& D3 i由于数据已经加载,因此我认为我将使用Management Studio并更改数据类型。但是我首先得到一个警告:7 ^2 G2 ]0 T3 Z( f1 X* @
Saving Definition Changes to tables with large amounts of data could take a  Q( W1 m) r* I7 `0 X9 S
considerable amount of time. While changes are being saved, table data will# n% E, G$ k. t) j5 f, L$ x
not be accessible.
- p2 r; [9 o: ^; O  C( i. m然后我得到一个错误:! d8 o1 p9 h, V+ Q
Timeout expired. The timeout period elapsed prior to completion of the. h" a6 G8 `. }# w  u& f% i
operation or the server is not responding.
6 m' T! s* l$ O' i% j我该如何解决?) L3 H3 r) ~8 d3 I) k8 J
               
# ^( l1 a- y: q0 t/ ?7 k解决方案:
0 g5 W2 ]# Y% S9 R; ]               
, b: f- A3 G- O( _8 N2 `
0 B$ b( b$ U. a1 z8 }1 m1 P2 g$ A! j
                如果这些列中的一列或多列没有约束(例如外键,索引,默认值,规则等),则您应该能够通过以下方法快速更改每一列
6 e5 \  F$ O9 E* P- Y3 @ALTER TABLE monster ALTER COLUMN MyIntCol1 bigint3 m) M2 ^% D, X
Management Studio的更改SQL很少是最高效的,并且倾向于使用临时表来进行任何修改现有列的操作。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则