iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >批量更新几百万条数据,速度太慢怎么办?怎样做到优化?
  • 887
分享到

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

摘要

表信息: CREATE TABLE `Users` (   `UserID` int NOT NULL AUTO_INCREMENT,   `UserName` varchar(20) NOT NULL,   `Age` int

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

表信息:

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
;

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

您可能感兴趣的文档:

--结束END--

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

本文链接: https://www.lsjlt.com/news/4625.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • oracle怎么批量更新百万数据
    在Oracle数据库中,可以使用批量更新语句来更新大量数据。以下是一种常用的方法: 创建一个临时表,将需要更新的数据插入到该临时表...
    99+
    2024-03-01
    oracle
  • mybatis怎么批量更新几千条数据
    在MyBatis中,可以使用批量更新操作来更新几千条数据。以下是一种实现方式: 在Mapper接口中定义一个批量更新的方法,如下所...
    99+
    2024-03-04
    mybatis
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作