美文网首页
一次3种数据库优化,时间从4分钟缩短为20秒

一次3种数据库优化,时间从4分钟缩短为20秒

作者: 江江简书 | 来源:发表于2019-10-25 19:05 被阅读0次
前言:从刚开始做这个功能时候就一直很诟病,因为涉及到从sqlsr,oricle中去取值并且,入库到mysql,刚开始由于时间的紧迫所以就用时间换控制生成数据,但是后面确实看不惯这么慢的生成数据的时间,所以动刀子优化。
1.前期的是调用某个同事封装的方法,批量插入数据库,好像是
insert into xxx;
insert into xxx;
以这样的形式foreach入库,这种入库方法是非常低效的而且非常慢。
2.中期实现优化的第一轮以这种
$val = sprintf("%s,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%f','%s','%s','%s','%s','%f','%f','%f','%s','%s','%s','%s','%s','%s','%s'", 'uuid()',$it_dt['id_assets'],$it_dt['license_num'],$it_dt['assets_num'],$it_dt['cars_brand'],$it_dt['car_model'],$it_dt['asset_make_num'],$it_dt['supplier'],$it_dt['engine'],$it_dt['power'],$it_dt['new_flag'],$it_dt['mon_rent'],$it_dt['car_location'],$it_dt['new_financing_type'],$it_dt['financing_type'],$it_dt['purchase_date'],$localoriginvalue_i,$depamount_new_i,$net_residual_money_i,$dt_time,'平均年限法',$status,$year_m,$id_org,$asset_name,$it_dt['bus_type']);
拼接一个长sql完成,这种拼接是很快但是咧组装数据那是灾难性,非常麻烦。
这种的模式是insert into xxx () values(),values().....这种形式
3.后期优化最后实现
//其中restable是一个数据库,表的数组
//$columns是一个字段=>值形式的二维数组
function quick_insert($restable,$columns){
     $sql_log = "insert into {$restable['db_name']}.{$restable['tbl_name']}";//定义长字符串
    $sql_key = '';//定义字段值变量
    $sql_value = '';//定义值字段对应值变量
    foreach ($columns as $key=>$row){
        if($key == 0){
            //得到key值作为字段值,
            $sql_key = "(`".implode("`, `", array_keys($row))."`) VALUES";
        }
        //得到value值
        $sql_value .= "( '".implode("', '", array_values($row))."'),";
    }
    //拼接结果
    $sql_l = <<<SQLL
{$sql_log} {$sql_key} {$sql_value}
SQLL;
    //把最后一个的逗号换成
    $sql_l = rtrim($sql_l, ',');
    $sql_l .= ';';
    return $sql_l;
}

最后:从这个代码优化提示了好几十倍从原来的4分钟变成20秒,而且组装数据也不会那么困难,代码还可以优化只是几万的数据插入就差不多,到此结束

相关文章

  • 一次3种数据库优化,时间从4分钟缩短为20秒

    前言:从刚开始做这个功能时候就一直很诟病,因为涉及到从sqlsr,oricle中去取值并且,入库到mysql,刚开...

  • MYSQL优化杂谈一,基于锁的优化

    MyISAM MyISAM的读锁,写锁 MyISAM优化建议 1.从MyISAM存储引擎锁定问题入手:缩短锁定时间...

  • 性能优化

    缩短时间 缓存,数据优化,算法优化,逻辑优化,需求优化 三级缓存 数据类型和数据结构 多使用二分查找和hash 提...

  • 数据库优化 - 实例优化

    从网上去搜数据库优化基本都是从SQL层次进行优化的,很少有提及到数据库本身的实例优化。就算有也都是基于某个特定数据...

  • 数据库优化 - 实例优化

    从网上去搜数据库优化基本都是从SQL层次进行优化的,很少有提及到数据库本身的实例优化。就算有也都是基于某个特定数据...

  • Mysql 的checkpoint

    1、Checkpoint作用 缩短数据库的恢复时间当数据库发生宕机时,数据库不需要重做所有的日志,因为 Check...

  • zabbix优化之进阶版

    官网调优 1. 数据库优化 1.设置数据库分区优化,buffer优化,hash优化, 说明:数据库分区优化的优点:...

  • 怎样搭建一个完整的便于优化的网站

    在网站搭建初期就完成所有便于优化的框架和内容能够缩短整个网站优化时间,一个完整的便于优化的网站包含:满足用户需求的...

  • vue打包优化

    网站首页第一次加载很慢,优化过后从十多二十秒缩短到了几秒,主要是打包的时候按需加载了,然后使用了gzip压缩。 这...

  • MySQL索引原理详解

    学习MySQL数据库索引原理知识,同时了解与性能相关的优化实践。 讲述关于索引的原理,为后面数据库优化提供合适的方...

网友评论

      本文标题:一次3种数据库优化,时间从4分钟缩短为20秒

      本文链接:https://www.haomeiwen.com/subject/gbdevctx.html