> 데이터 베이스 > MySQL 튜토리얼 > mysql 批量更新数据的技巧_MySQL

mysql 批量更新数据的技巧_MySQL

WBOY
풀어 주다: 2016-06-01 13:30:30
원래의
985명이 탐색했습니다.

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
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿