今天需要给有500万条数据的表添加主键和自增长列,其中最大的难度在于如何UPDATE这500万多条数据,开始吧!

1.先给表添加一个字段叫ID,并允许空

2.查询表,我想到了使用其中的时间列排序来创建表的序号来生成我们想要的自增列ID。

--其中查询出来的字段将作为我UPDATE时的匹配条件
SELECT row_number() over(order by InsertTime asc) as num,UserID cUserID,Score cScore,InsertTime cInsertTime,InoutIndex cInoutIndex,ChairID cChairID FROM [RecordDrawScore] ) c

序号已经自动生成了,下一步update到我们的表

--其中我优化下把查询到的结果放到临时表#Temp

3.update这些数据

UPDATE [RecordDrawScore] SET ID = c.num
FROM #Temp c
WHERE UserID=c.cUserID AND InsertTime = c.cInsertTime AND Score = c.cScore AND InoutIndex =c.cInoutIndex AND ChairID=cChairID

4.检查我们update的效果如何

SELECT id FROM [dbo].[RecordDrawScore] GROUP BY  id HAVING COUNT(id)>1

我们添加的id没有重复的,就代表成功了!

5.将表中的id设置为主键并添加自增长

6.新增一条记录试试

如果一切操作顺利,那么会有一个新的id

注意要是在UPDATE表时,要停掉INSERT操作!不然会有新的列没有ID,就无法继续设置为自增长列!

SqlServer数据库优化之添加主键和自增长的更多相关文章

  1. Oracle数据库作业-2 添加主键 外键

    一.在表student中添加主键sno

  2. sqlserver添加主键

    sqlServer中给表添加主键的sql: alter table market_media_medical_history alter column pk_id bigint not null; a ...

  3. SQL Server 数据库添加主键,唯一键,外键约束脚本

    -- 声明使用数据库use 数据库;go -- 添加主键(primary key)约束-- 基本语法-- 判断主键约束是否存在,如果存在则删除,不存在则添加if exists(select * fro ...

  4. MyBatis面对Oracle数据库如何实现主键列自增长

    因为Oracle数据库而言 不能够像SqlServer和MySql一样主键自增 而且MyBatis也没有提供直接的主键自增方法 所以我们自己使用查询语句来实现自增 实现代码: <insert i ...

  5. SQL Server 创建表 添加主键 添加列常用SQL语句

    --删除主键 alter table 表名 drop constraint 主键名 --添加主键 alter table 表名 add constraint 主键名 primary key(字段名1, ...

  6. SQL批量添加主键脚本

    --SQL批量添加主键脚本 --操作提示:运行此脚本前请记得备份您要操作的数据库 --实现功能:执行脚本后数据库中的所有数据表都会有一个主键 --添加规则1:主键名称为ID(可自己修改),数据类型为整 ...

  7. 创建表 添加主键 添加列常用SQL语句

    --删除主键 alter table 表名 drop constraint 主键名--添加主键alter table 表名 add constraint 主键名 primary key(字段名1,字段 ...

  8. SQL Server 创建表 添加主键 添加列常用SQL语句【转】

    --删除主键alter table 表名 drop constraint 主键名--添加主键alter table 表名 add constraint 主键名 primary key(字段名1,字段名 ...

  9. Oracle 视图添加主键

    在Entity Framework中,从数据库生成模型,视图常报无主键. 解决办法:为试图添加主键/复合主键 create or replace view view_activebudgetamoun ...

随机推荐

  1. 告诉你一些DBA求职面试技巧

    告诉你一些DBA求职面试技巧 要自信!永远不要低估你的能力.如果你不了解什么问题的答案,承认它.重点放在你找出答案的能力和你学习的意愿. 不要自大!是的,你可能过于自信而被认为是骄傲的.轻率的,甚至是 ...

  2. 5-6 可视化库Seaborn-Facetgrid使用和绘制多变量

      基本工作流程是FacetGrid使用数据集和用于构造网格的变量初始化对象.然后,可以通过调用FacetGrid.map()或将一个或多个绘图函数应用于每个子集 FacetGrid.map_data ...

  3. client-go向controller进发---code-generator实现

    这个时间长了,可能前后想了一周时间. 哎,其它不怪,只怪go的工程包管理这几年太混乱, 而国内下载资源也太漫长. 现在,只能坚持 使用go mod了. 但在使用code-generator时,go m ...

  4. 【bzoj4154】(dfs序+kd-tree)

    传送门 题意: 给出一颗以\(1\)为根的有根树,初始所有结点的颜色为\(1\). 之后有两个操作,一种是每次将距离\(a\)结点距离不超过\(l\)的所有儿子结点颜色染为\(c\):另一种是询问结点 ...

  5. Python基础之猜数游戏

    例题一:猜数游戏.在程序中预设一个0~9之间的整数,让用户通过键盘输入所猜的数,如果大于预设的数,显示“遗憾,太大了”:小于预设的数,显示“遗憾,太小了”,如此循环,直至猜中该数,显示“预测N次,你猜 ...

  6. 201871010111-刘佳华《面向对象程序设计(java)》第十周学习总结

    201871010111-刘佳华<面向对象程序设计(java)>第十周学习总结 实验八 异常.断言与日志 实验时间 2019-11-1 1.实验目的与要求 (1) 掌握java异常处理技术 ...

  7. Jupyter notebook and Octave kernel installation

    Jupyter notebook 安装 为了更加方便地写 Python 代码,还需要安装 Jupyter notebook. 利用 pip 安装 Jupyter notebook. 为什么要使用 Ju ...

  8. tensorboard运行使用(排坑)记录一

    首先运行如下代码(路径根据你自己的要求更改) writer = tf.summary.FileWriter("G:/tensorflow/graph", tf.get_defaul ...

  9. luoguP5227 [AHOI2013]连通图(线性基做法)

    题意 神仙哈希做法. 随便找个生成树,给每个非树边赋一个值,树边的值为所有覆盖它的边的值得异或和. 删去边集使得图不联通当且即当边集存在一个子集异或和为0,可以用线性基. 证明的话好像画个图挺显然的 ...

  10. 使用CMD命令部署.NetCore程序到IIS

    dotnet restore cd src\XXXXX md publish dotnet publish -o publish cd publish set siteFilePath=%cd% se ...