今天需要给有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. 基于socketsever下实现的FTP

    # ### 客户端client import socket import json import struct import os sk = socket.socket() sk.connect( ( ...

  2. 1.JavaCC安装与测试

      下面介绍的是JavaCC在windows系统中的安装与小代码测试过程. 一.JavaCC安装   步骤 :在JavaCC的官网首页下载JavaCC,然后配置电脑的环境变量,接着在dos命令行里就可 ...

  3. Lustre 文件系统安装

    制作一个本地镜像 reposync configfile: [root@localhost html]# cat lustre-repo.conf [lustre-server] name=lustr ...

  4. Linux:别名的设置

    作用 别名的作用是将较长的命令做简化 定义别名 alias [别名[=原命令]] 删除别名 unalias 查看系统可用别名 alias

  5. CentOS7 安装Jenkins

    准备工作 首选需要安装JAVA环境  https://www.cnblogs.com/stulzq/p/9286878.html 如果你的系统没有自带git,那么也需要安装一个 yum install ...

  6. 忘记IBM服务器的登录IP

    问题描述: 一台服务器安装了winserver2003系统,经过漫长的加电启动,能进入到win2003的登录界面,提示ctrl+alt+del登录界面,但是发现键盘失灵了,无法键入ctrl+alt+d ...

  7. c# 第26节 Main方法

    本节内容: 1:Main方法 2:Main方法的定义 3:测试Main函数传入参数 4:Main的大总结 1:Main方法是什么 2:Main方法的定义 3:测试打印出外部传入Main的参数 clas ...

  8. [C1] Andrew Ng - AI For Everyone

    About this Course AI is not only for engineers. If you want your organization to become better at us ...

  9. Note | Ubuntu

    目录 0. 教程 1. 安装 2. 系统 0. 教程 <Linux就该这么学>:https://www.cnblogs.com/RyanXing/p/9462850.html 1. 安装 ...

  10. 周董新歌搞崩QQ,抓取20W评论看看歌迷在说啥

    9 月 16 日晚间,周董在朋友圈发布了最新单曲<说好不哭> 发布后,真的让一波人哭了 一群想抢鲜听的小伙伴直接泪奔 因为 QQ 音乐直接被搞崩了 没想到干翻 QQ 音乐的不是网易云音乐 ...