Heim >Datenbank >MySQL-Tutorial >mysql 批量更新数据的技巧_MySQL

mysql 批量更新数据的技巧_MySQL

WBOY
WBOYOriginal
2016-06-01 13:30:30974Durchsuche

bitsCN.com

    当在开发的时候有时候需要手动修复数据或者更新数据,一般在自己的项目里写一个main函数对数据读取或者修改即可,但执行的时候要从本地连接外网,

如果数据量很大的时候。几十万或者上百万等以上的话,性能会非常的差,这时候把sql语句写好放在数据库里直接执行会好很多。

   在mysql数据库里的innodb引擎,一般数据增删改都有内置的事务的,而且有默认的超时限制,好像是50s,如果数据量大而且很多连接查询的话会超时, 

   这时候不妨把连接查询的数据创建临时表并对临时表创建索引,然后添加数据或修改数据对临时表进行连接关联,这时候性能会快很多,举个例子:

 DROP TEMPORARY TABLE IF EXISTS tmp;

 CREATE TEMPORARY TABLE tmp
    select b.UserId,b.field1,b.field2, b.field3 from
                    (select Max(AutoId) as AutoId
                    from T_Table2  where UserId
                    group by UserId) a left join T_Table1 b on a.AutoId=b.AutoId;
 ALTER TABLE tmp ADD INDEX `index_UserId` (`UserID` ASC) ;

  INSERT INTO T_Table3(`UserId`,`field1`,`field2`,`field3`, `CreateTime`,`CreateIp`,`ModifyTime`,`ModifyIp`)
    select a.UserId,a.field1,a.field2,a.field3,now(),'127.0.0.1',now(),'127.0.0.1'
    from tmp;

    临时表用完之后要删除,DROP TEMPORARY TABLE tmp;

bitsCN.com
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn