MySQL IN(............) 里面有大量数据

我要更新一表格,其被Update的数量非常非常的多

update ybtbo set TBNewFlag=1 where AtTBOID IN (698,699.............)

我这(689,699,700.............. ) 约有4000到5000个
我少数用100多个是没问题的

我有想到的是,将这些数组切500个update一次,但我不知道怎么切

目前将这些数组传到了temstr=(689,699,700...............)

希望能提供较好的方式来update这个大表格

0

9个回答

这么多In的数据,最好还是用其他条件来取代In

-1
qq_41965147
qq_41965147 这么多In的数据,最好还是用其他条件来取代In
大约一年之前 回复
weixin_40187983
weixin_40187983 是的,我还是不用in来用比较好了!
大约一年之前 回复

可以试一下用存储过程批量更新

0
weixin_40187983
weixin_40187983 请问具体如怎么做呢?
大约一年之前 回复

in里面的id如果是连续的就直接id>xxx。如果是不连续的id的话,分多条sql去更新,我觉得快速的办法就是在excel中去组装多条sql,把id拷贝到excel的一列里面去后面不说你也知道怎么做了。

0

drop procedure if exists procUpdate;
CREATE PROCEDURE procUpdate()
begin
DECLARE minid INT;
DECLARE maxid INT;
DECLARE currentid INT;
DECLARE endid INT;
DECLARE seed INT;
set seed=500;
set minid = 698;
set maxid = 你的最大值;
select minid,maxid;
set currentid=minid;
while currentid<=maxid
do
if currentid+seed>maxid then
set endid=maxid;
else
set endid=currentid+seed;
end if;
update ybtbo set TBNewFlag=1 where AtTBOID = minid
between currentid and endid;
set currentid=endid+1;
end while;
end;
CALL procUpdate;
drop procedure procUpdate;

评论有字数限制。所以再次回答一次,上面是存储过程,没有你的数据库,不知道能不能行;如果不能执行,你再百度一下,改一下

0

where AtTBOID IN (498,499.............) or AtTBOID IN (598,599.............) or AtTBOID IN (698,699.............)

0

传递参数用list,sql语句里foreach循环list,也不用分割啊

0

最好用sql查询出需要更新的主键update table set a=** where pkvalue in(select pkvalue from table )

0

给你一个思路,AtTBOID 建立索引,in里面的放入临时表,两个表做inner join,结果就是你要的。

0

首先创建一张临时表AtTBOID_Tmp,用来存储in 里面的id,字段名也叫做AtTBOID吧
然后执行下面的语句就可以了
update ybtbo t1,AtTBOID_Tmp t2 set t1.TBNewFlag=1 where t1.AtTBOID = t2.AtTBOID;

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MySQL IN(............) 里面有大量数据
我要更新一表格,其被Update的数量非常非常的多nnupdate ybtbo set TBNewFlag=1 where AtTBOID IN (698,699.............)nn我这(689,699,700.............. ) 约有4000到5000个n我少数用100多个是没问题的nn我有想到的是,将这些数组切500个update一次,但我不知道怎么切nn目前将这些数组传到了temstr=(689,699,700...............)nn希望能提供较好的方式来update这个大表格
MySQL优化案例:IN子查询包含超大数据量值
背景: 我们知道一条慢SQL会造成大量的物理IO读操作,严重消耗服务器IO资源。 该慢SQL类似于: SELECT UID, COUNT(1) AS UID_COUNT FROM TB_XXXXX WHERE UID IN( ’XXX’, ’XXX’, ’XXX’, ) GROUP BY UID 应用程序在IN子查询中传入超过22000个UID值,整个SQ...
mysql 导入大量数据
c:Documents and Settings/&amp;gt; cd e:/xampp/mysql/bin e:/xampp/mysql/bin&amp;gt; mysql -u root -p password: mysql&amp;gt;use mydata; mysql&amp;gt;charset utf8;(导入文件的编码gbk) mysql&amp;gt;source d:/dbname.sql;...
JavaScript脚本精华-JS脚本精华
里面有大量的JS脚本源代码; 里面有大量的JS脚本源代码;
mysql优化小技巧之去除重复项(百万级数据)
    说到这个去重,脑仁不禁得一疼,尤其是出具量比较大的时候。毕竟咱不是专业的DB,所以嘞,只能自己弄一下适合自己去重方法了。    首先按照常规首段,使用having函数检查重复项,完事一个一个的删除。不要问我having检测重复项的sql咋写,你懂得哈。。。这个在只有几条重复的时候还可以。要是几千上万条不同数据重复,那咋办。。。    完事呢,咱就考虑了,用having函数查询的时候,原始s...
一张表里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把mysql重启,再insert一条记录,这条记录的ID是18还是15 ?
一般情况下,我们创建的表的类型是InnoDB,如果新增一条记录(不重启mysql的情况下),这条记录的id是18;但是如果重启(文中提到的)MySQL的话,这条记录的ID是15。因为InnoDB表只把自增主键的最大ID记录到内存中,所以重启数据库或者对表OPTIMIZE操作,都会使最大ID丢失。         但是,如果我们使用表的类型是MylSAM,那么这条记录的ID就是18。因为MylSAM...
MYSQL中出现名为#mysql50#的数据库,解决办法
MYSQL中出现名为#mysql50#的数据库,原因是mysql文件储存路径下(例如我的是C:\ProgramData\MySQL\MySQL Server 5.7\Data),有中文名称的文件夹,删掉即可。
Where条件的in里面放太多数据导致很慢
比如:select * from TableA where ID in (42,216,219,230,231,220,249,250,221,251,252,217,253,255,256,254,257,258,1804) 52W数据,查询速度19386ms,好慢怎么办?程序都卡死了。   那么试一下百度搜索到的优化方式? 1.将in里面的ID分拆查询,再合并数据 select
记录一个mysql大量数据快速插入的方法
经过数月的历练与开发,终于在这个月手上负责的一个项目即将交付了,看着这一两个月让我偶感压力的繁杂的事情一件件处理完毕,原本动荡的心静也渐渐平静了些许。此时再回过头过去看那些困扰我N多个日夜的某些问题其实也不过如此。有些事情自己无法改变,只能乐观地坦然地面对。面对充满未知的未来努力让自己保持每一天都快乐才是王道,哈哈!在本周将一个需要处理上千万数据量的项目部署到UAT环境后,发现数据插入到mysql...
快速为MySQL创建大量测试数据
引言在PostgreSQL中可以用generate_series()函数来快速生成大量测试数据,在MySQL中没有提供类似的东西。那么在做测试的时候,要往表中插入大量数据库该怎么办?可以写一个循环执行INSERT语句的存储过程,但这种方式还是太慢,我试了下,1秒钟居然只能插500条记录。比较快的方式是用程序生成一个数据文件,再用load data加载。但是直接用程序生成最终的测试数据的方式又不够灵
java的多线程设计
java多线程的设计,里面有大量的样例!java多线程的设计,里面有大量的样例!
读数据——从数据库中批量读取数据
下面以mysql为例,用spring batch批量从mysql数据库表users表中读取数据。 uers表目前数据如下: 下面用spring batch批量读取该表,首先配置数据源 #配置step执行多少次commit一次 spring.batch.chunk.size=4 #数据源配置 spring.datasource.url=jdbc:mysql://localhost:33...
Mysql大量测试数据快速生成
1.建表 DROP TABLE IF EXISTS `sys_user`; CREATE TABLE `sys_user` ( `user_id` bigint(100) NOT NULL AUTO_INCREMENT, `username` varchar(100) DEFAULT NULL COMMENT '用户名', `password` varchar(100) DEFAULT...
MySQL安装包及安装教程
MySQL安装包及里面有MySQL详细的安装教程。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
Mysql导出大量数据到文本,随后存入Hbase
  1. 当需要 从Mysql的某个数据表中,导出其中的几列到文本,并且以一定的格式,则用以下命令:   SELECT concat(itemid,'-',clock*1000,',',value) result from history where clock&amp;gt;=1539155100 and clock&amp;lt;1539325020 into OUTFILE '/tmp/b.out';...
Java 从MySQL中读取大量数据
本文记录使用java的jdbc从MySQL中读取大量数据不出现OOM的方法,一般的使用jdbc读取的时候,会将查询结果全部导入到内存中,如果数据量很大的时候会出现OOM异常,本文将介绍如何使用MySQL中的分页功能,设置featchSize大小防止OOM,轻松读取海量数据的方法(笔者测试读取量为3000W行数据)
【MySQL】删除大量数据的具体实现
ourmysql博客中提供了 《大表删除数据的思路》,对于大表依据主键删除的思路是必须的,删除几千万的数据还算是比较简单的,如果你的数据库中的表高达数百亿条记录 ,删除其中的几十亿,就需要考虑可用性的问题了。上述文中的 利用生成的文本方式有些不妥。 我的方法是利用存储过程,游标,先根据条件获取要删除的主键,然后依据主键删除,考虑到删除50亿条记录耗费...
mysql---为测试数据库填充大量数据
首先创建一个库create database mysqlsystemsuse mysqlsystems;创建两个表 - innodb的和myisam的CREATE TABLE `myisam` (`id` int(11) NOT NULL auto_increment,`name` varchar(50) default NULL,`post` text,PRIMARY KEY (`id...
BP跑程序的数据.rar
里面有大量的数据文本,可以跑BP数据测试。可以自行用于自己的程序中
超市数据库数据(sql2005)
里面有大量数据,我做课程设计时用来数据挖掘用的。sql2005数据库的。
1.5万个单词 mysql包括中文翻译,英美音标,注释,例句
mysql单张表,里面有1.5万个单词,英汉词典数据,包括中文翻译,英美音标,注释,例句。
mysql大批量数据更新
批量更新操作常用的方式如下: 1.replace into 本质是先delete重复数据,然后再insert数据,非空字段会设置成默认值,极其危险慎用,可能清空大量数据 replace into tst (id,attr) values (1,'2'),(2,'3'),...(x,'y'); 2.insert into 只更新主键id记录的需要更新的字段,其他字段不清除。如果主键id不...
用一张表解决你批量插入千万条数据的烦恼
在性能测试时,常常需要大量的记录数。 MySQL函数较少,在PostgreSQL中有 generate_series 函数,使用十分方便。在MySQL中如何更加方便的处理,可以生成一个序列号表,专门用于批量操作,插入数据。 -- 创建序列表 CREATE TABLE numserial ( num INT ); -- 插入数据 INSERT INTO numserial(num) value...
mysql插入大量数据,时间的优化。
背景:    业务场景假设,公司原有excel记录了千万级客户的相关数据,公司业务结构实现了信息化的布局,需要在新开发的CRM系统中导入千万级的客户数据。此时需要用到mysql的insert操作来插入用户的海量数据。     普通情况下,会使用for循环一条一条的插入数据。     假设客户的数据量为10条数据。&amp;lt;?php $connect=@mysql_connect(&quot;localhost...
在配置spring的数据源时遇到的奇葩错误
以下错误均出现在eclipse使用spring+hibernate访问MySQL数据库的时候。 eclipse版本:Version: Neon Release (4.6.0) spring版本:4.3.0 hibernate版本:5.2.0 MySQL版本:5.7.13 MySQL驱动版本:5.1.39 spring配置文件名:applicationContext.xml。<!--定义数
超大数据快速导入MySQL
一.问题背景由于论文实验需要,现有下面两个需求. 1. 将1G的csv文件数据导入MySQL单表sample中,记录数2000w+; 2. 将上面的sample表中的数据迁移到远程数据库中.二.解决方案对于需求1,有如下解决方式. 1. 使用Navicat 工具栏中’数据导入’功能; 2. 使用编写Python/Perl脚本导入(未实现). 3. 使用MySQL的LOAD DATA
利用python快速把数据存储至MySQL
利用python快速把数据存储至MySQL函数功能介绍新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 函数功能...
记一次mysql删除大量数据的优化
最近工作中,遇到了要删除一些相关库的数据信息,涉及的数据有点多。 实际场景是这样的,公司的一个电商项目,电商为卖家准备了报表的相关数据,报表业务在实现时,将一些订单信息冷库备份到报表的库中,然后再在报表的库中进行相关的报表相关业务的计算。 由于项目起步时间晚,客户留存率不高,就遗留了相当大的一部分流失用户的数据,现在,开始着手删除这些已经不再使用系统的客户的历史数据。 数据库中做了分表将相关
人工智能之大数据客户行为
人工智能之大数据客户行为,里面有大量客户购物行为的数据,可以让大数据的初学者拿来练手
mysql大批量测试数据生成
建表CREATE TABLE `km_tbl_companysongfilter_new` ( `FilterID` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `CompanyCode` VARCHAR(10) NOT NULL, `FilterType` VARCHAR(32) NOT NULL COMMENT '过滤类别', `Filte
MySQL 如何快速插入大量数据
这几天尝试了使用不同的存储引擎大量插入MySQL表数据,主要试验了MyISAM存储引擎和InnoDB。下面是实验过程: 一、InnoDB存储引擎。 创建数据库和表 CREATE DATABASE ecommerce; CREATE TABLE employees ( id INT NOT NULL, fname VARCHAR(30), ...
构造大量测试数据的方法(MySql)
创建测试表 CREATE TABLE `sys_user` ( `id` CHAR (32) NOT NULL DEFAULT '' COMMENT '主键', `username` VARCHAR (100) NOT NULL DEFAULT '' COMMENT '用户名', `password` CHAR (32) NOT NULL DEFAULT '' COMMENT '密码',...
【MySQl】- 随机生成大量测试数据(测试用)
1.创建表 CREATE TABLE person ( id bigint(20) unsigned NOT NULL, fname varchar(100) NOT NULL, lname varchar(100) NOT NULL, age tinyint(3) unsigned NOT NULL, sex tinyint(1) unsigned NOT NULL, PRIMARY KEY (...
关于mysql存储图片,时间,大量文字的情况
对于图片,mysql提供了blob的数据类型,当然我们也可以把byte数组翻译成string存储。 首先创建数据库,然后blob一般接受blob和inputstream,然后我们就可以这样把一个icon存放在blob里 对于时间,我们可以有很多选择,一般都是timeXXX但是我比较喜欢用bigint。主要提示一点bigint存储的时候可以直接setint 对于大量文字,mysql提供了tex
mysql查询大数据,遍历大数据,流式查询
# -*- coding: utf-8 -*- '''Chinese comments are used below, need to be added''' # Author: xiaolong.shi # Email: xiaolong@zamplus.com import GeoCode class AddGeocode(object): ...
mysql数据转存到redis
一、编写sql脚本,保存为m2r.sql文件 SELECT CONCAT( &quot;*4\r\n&quot;, '$', LENGTH(redis_cmd), '\r\n', redis_cmd, '\r\n', '$', LENGTH(redis_key), '\r\n', redis_key, '\r\n', '$', LENGTH(hkey), '\r\n', hkey, '...
mysql批量删除大量数据
假设有一个表(syslogs)有1000万条记录,需要在业务不停止的情况下删除其中statusid=1的所有记录,差不多有600万条, 直接执行 DELETE FROM syslogs WHERE statusid=1 会发现删除失败,因为lock wait timeout exceed的错误。因为这条语句所涉及的记录数太多,因此我们通过LIMIT参数分批删除,比如每10000条进行一次删除,那...
解决mysql中in子查询导致不走索引
原sql为: SELECT SUM(money) FROM wallet WHERE user_id IN (SELECT DISTINCT user_id FROM user_recharge WHERE group_id = '6789' AND is_del=...
mybatis 流式读取大量MySQL数据
JDBC三种读取方式: 1.一次全部(默认):一次获取全部。 2.流式:多次获取,一次一行。 3.游标:多次获取,一次多行。 由于生成报表逻辑要从数据库读取大量数据并在内存中加工处理后再生成Excel返回给客户端。
PHP利用PDO从mysql读取大量数据处理(可做大量数据集的导出,业务调整等)
环境 mysql: 5.6.34php: 5.6nginx: php-fpm 适用场景 需要处理一定数据集业务 从mysql读取一定数据的业务导出 一次需要处理一定的mysql业务操作更新删除等 更多需要处理一定数据集的操作 pdo 关键设置 $dbh = new \PDO($dsn, $user, $pass); # 关键设置,如果...