大数据更新速度_sql批量更新多条数据

大数据更新速度_sql批量更新多条数据现有一个Users表,两百万条数据 表信息: CREATE TABLE `Users` ( `UserID` int NOT NULL AUTO_INCREMENT, `UserName` varc…

批量更新几百万条数据,速度太慢怎么办?怎样做到优化?

表信息:

CREATE TABLE `Users` (
  `UserID` int NOT NULL AUTO_INCREMENT,
  `UserName` varchar(20) NOT NULL,
  `Age` int DEFAULT NULL,
  `Sex` tinyint DEFAULT NULL,
  `PhoneNumber` varchar(11) NOT NULL,
  `Email` varchar(20) NOT NULL,
  `IdCard` varchar(18) NOT NULL,
  `BrithDay` date DEFAULT NULL,
  `Address` tinytext,
  `Qq` char(12) DEFAULT NULL,
  `Zodiac` char(2) DEFAULT NULL,
  `Education` char(10) DEFAULT NULL,
  `Hobby` char(20) DEFAULT NULL,
  `Company` char(20) DEFAULT NULL,
  `Nation` char(5) DEFAULT NULL,
  `Marital` char(2) DEFAULT NULL,
  `Plitical` char(5) DEFAULT NULL,
  `Active` tinyint DEFAULT “0”,
  PRIMARY KEY (`UserID`)
) ENGINE=InnoDB AUTO_INCREMENT=1010101 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

要做的:把UserID中包含数字2的数据中Active值改为1.

首先创建一个临时表,把需要更改的数据插入到表中

CREATE TEMPORARY TABLE TmpUsers AS 
SELECT 
   Users.UserID
 , Users.Active 
FROM Users
WHERE Users.UserName LIKE “%2%”
;

在TmpUsers给UserID添加主键索引

ALTER TABLE TmpUsers ADD PRIMARY KEY IX_1(UserID)
;

按要求更改临时表中的数据

UPDATE TmpUsers
SET
   TmpUsers.Active = 1
WHERE TmpUsers.UserID LIKE “%2%”
;

建立临时表TmpUsers和原表Users连接

UPDATE Users
INNER JOIN TmpUsers ON Users.UserID = TmpUsers.UserID
SET Users.Active = TmpUsers.Active
;

通过建立临时表用主键索引来批量更改表信息,安全系数较高,运行速度快。不会影响原表的使用。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9818.html

(0)
上一篇 2023-01-31
下一篇 2023-01-31

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注