首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Server相关表中主键从GUID更改为BigInt的方法

Server相关表中主键从GUID更改为BigInt的方法
EN

Stack Overflow用户
提问于 2010-04-28 06:24:19
回答 3查看 1.6K关注 0票数 6

我有两个表,有1,000万到2,000万行,其中有GUID主键,至少有12张表与外键相关。基表每个有10-20个索引。

我们正在从GUID移动到BigInt主键。我想知道有没有人对这个方法有任何建议。现在,这就是我正在思考的方法:

  1. 在所涉及的所有表上删除所有索引和键。
  2. 在每个表中添加“NewPrimaryKey”列
  3. 在两个基表上设置键标识
  4. 编写数据更改脚本“更新表x,设置NewPrimaryKey =y,其中OldPrimaryKey =z
  5. 将原始主键重命名为“oldprimarykey”
  6. 重命名“NewPrimaryKey”列“PrimaryKey”
  7. 脚本返回所有索引和键。

这看起来是个好办法吗?有没有人知道有一个工具或脚本会对此有所帮助?

TD:按其他资料编辑。请参阅这篇博客文章,其中提到了GUID是主:http://www.sqlmag.com/blogs/sql-server-questions-answered/sql-server-questions-answered/tabid/1977/entryid/12749/Default.aspx时的一种方法

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-28 06:36:42

这个策略听起来确实有效--删除约束,从下面更改列(类型更改,名称保持不变),然后重新创建约束是相当优雅的。

目标是最终删除GUID列吗?如果是这样的话,除非表被复制或重建,否则您不会实际回收空间,因此可能需要进行以下调整:

..。

4.编写数据更改脚本“更新表x,设置NewPrimaryKey =y,其中OldPrimaryKey =z”

5.将原始主键删除为“旧主键”

6.重命名“NewPrimaryKey”列“PrimaryKey”

7.用脚本返回所有索引和键(构建聚集索引“重构”表)

8.对于所有没有聚集索引的表,请做一些事情以确保它们得到重建,并恢复它们的空间(例如构建,然后删除聚集索引)。

不用说,在生产运行之前,在开发框上测试它吧!

票数 0
EN

Stack Overflow用户

发布于 2010-04-28 06:29:52

你的方法是我怎么做的。

你真的需要bigint吗?一个普通的4字节int将达到20亿(2,147,483,647)。

int,bigint,smallint和tinyint

票数 3
EN

Stack Overflow用户

发布于 2010-04-28 06:45:50

我还要补充一句:

在启动之前,确保您有一个良好的当前备份。将服务器更改为以单用户模式运行(首先通知用户中断期间)。您不希望用户在进行此操作时尝试输入数据。

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

https://stackoverflow.com/questions/2730305

复制
相关文章
使用VBA删除工作表多列中的重复行
自Excel 2010发布以来,已经具备删除工作表中重复行的功能,如下图1所示,即功能区“数据”选项卡“数据工具——删除重复值”。
fanjy
2022/11/16
11.4K0
使用VBA删除工作表多列中的重复行
SQL中的行转列和列转行
SQL是IT行业很多岗位都要求具备的一项能力,对于数据岗位而言更是如此,甚至说扎实的SQL基础也往往是入职这些岗位的必备技能。而在SQL面试中,一道出镜频率很高的题目就是行转列和列转行的问题,可以说这也是一道经典的SQL题目,本文就这一问题做以介绍分享。
luanhz
2021/06/25
7.2K0
SQL 中的行转列和列转行
行转列,列转行是我们在开发过程中经常碰到的问题。行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 的运算符PIVOT来实现。用传统的方法,比较好理解。层次清晰,而且比较习惯。 但是PIVOT 、UNPIVOT提供的语法比一系列复杂的SELECT…CASE 语句中所指定的语法更简单、更具可读性。下面我们通过几个简单的例子来介绍一下列转行、行转列问题。
玖柒的小窝
2021/11/08
5.5K0
SQL 中的行转列和列转行
如何生成A-AZ列 excel表的列 不用序号的那种?
前几天在Python最强王者交流群【逸】问了一个Pyhton处理Excel的问题,这里拿出来给大家分享下。
前端皮皮
2022/12/19
1.7K0
如何生成A-AZ列 excel表的列 不用序号的那种?
Excel应用实践16:搜索工作表指定列范围中的数据并将其复制到另一个工作表中
“在工作表Sheet1中存储着数据,现在想要在该工作表的第O列至第T列中搜索指定的数据,如果发现,则将该数据所在行复制到工作表Sheet2中。
fanjy
2019/07/19
6.1K0
如何使用python连接MySQL表的列值?
MySQL 是一个开源关系数据库管理系统,广泛用于存储、管理和组织数据。使用 MySQL 表时,通常需要将多个列值组合成一个字符串以进行报告和分析。Python是一种高级编程语言,提供了多个库,可以连接到MySQL数据库和执行SQL查询。
很酷的站长
2023/08/11
2450
如何使用python连接MySQL表的列值?
MySQL中的锁(表锁、行锁)
锁是计算机协调多个进程或纯线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。
用户1205080
2019/03/19
5.1K0
MySQL中的锁(表锁、行锁)
锁是计算机协调多个进程或纯线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。
星哥玩云
2022/08/17
4.9K0
如何隐藏table 中的指定列?
如何隐藏table 中的指定列?当页面需要显示的内容太多,而页面宽度又不够,不想内容显示太混乱,常常会将指定的列暂时隐藏掉,那么如何让实现呢?
爱明依
2019/03/12
6.9K0
Excel中两列(表)数据对比的常用方法
Excel中两列数据的差异对比,方法非常多,比如简单的直接用等式处理,到使用Excel2016的新功能Power Query(Excel2010或Excel2013可到微软官方下载相应的插件)实现各种复杂的数据整理后再进行对比,可以根据实际需要选择使用。
大海Power
2021/08/30
16.6K0
标签制作软件如何制作1行多列的标签
在使用标签制作软件制作标签时,我们需要根据标签纸的实际尺寸在标签软件中进行设置。因为只有将标签纸的实际尺寸跟标签软件中的纸张尺寸设置成一致的,才能打印到相应的纸张上。例如常见的一行多列的标签该怎么设置呢?接下来就带大家学习下在标签制作软件中设置1行多列标签的方法:
用户5746110
2019/09/18
2.7K0
SQLite 把表或列重命名为另一个名字的操作方式
您可以暂时把表或列重命名为另一个名字,这被称为别名。使用表别名是指在一个特定的 SQLite 语句中重命名表。重命名是临时的改变,在数据库中实际的表的名称不会改变。
用户9236362
2021/11/29
2.2K0
Numpy中如何给矩阵增加一行或一列
使用Python的numpy的array结构,如何给矩阵增加一行或者一列呢? 下面提供一种方法,当然numpy还提供了很多API函数可供选择。
卡尔曼和玻尔兹曼谁曼
2019/01/22
4.8K0
Numpy中如何给矩阵增加一行或一列
列存储、行存储
Sybase在2004年左右就推出了列存储的Sybase IQ数据库系统,主要用于在线分析、数据挖掘等查询密集型应用。列存储,缩写为DSM,相对于NSM(N-ary storage model),其主要区别在于:
全栈程序员站长
2022/09/14
7.9K0
列存储、行存储
MySQL中的行转列和列转行操作,附SQL实战
MySQL是一款常用的关系型数据库,广泛应用于各种类型的应用程序和数据存储需求。在MySQL中,我们经常需要对表格进行行转列或列转行的操作,以满足不同的分析或报表需求。本文将详细介绍MySQL中的行转列和列转行操作,并提供相应的SQL语句进行操作。
网络技术联盟站
2023/06/08
18.2K2
行存储和列存储的优缺点
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159308.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/14
1.7K0
Spark中SQL列和并为一行
但是在 spark 中没有 GROUP_CONCAT 命令,查找后发现命令 concat_ws :
机器学习和大数据挖掘
2019/07/02
1.7K0
SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段; 方法二:使用拼接SQL,动态列字段; 方法三:使用PIVOT关系运算符,静态列字段; 方法四:使用PIVOT关系运算符,动态列字段; 扩展阅读一:参数化表名、分组列、行转列字段、字段值; 扩展阅读二:在前面的基础上加入条件过滤; 参考文献(References) 二.背景(Contexts) 其实行转列并不是一个什么新鲜的话题
用户1112962
2018/07/03
4.3K0
点击加载更多

相似问题

VBA:不想重复一次以上的For循环

15

每个循环根据条件递增一次以上的循环变量

45

如何使用SoundPool播放32种以上的声音?

20

如何在JavaScript中循环声音?

11

每x秒播放一次声音(循环)

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文