gpt4 book ai didi

mysql - 优化 多数据库更新

转载 作者:行者123 更新时间:2023-11-29 02:45:02 26 4
gpt4 key购买 nike

我在我的应用程序中使用 laravel。所以现在我需要使用 Cron 作业每天更新一次数据库中的许多行。

如果我要使用 laravel 内置的更新选项,我需要做这样的事情:

// for example, the update info in array
$arrayToUpadte = [
[
'numberId' => '0500000000',
'usagePer' => '4.5'
],
[
'numberId' => '0500000001',
'usagePer' => '5.6'
],
[
'numberId' => '0500000002',
'usagePer' => '8.1'
],
[
'numberId' => '0500000003',
'usagePer' => '0.3'
]
];


// update will do one query to db every update!!
foreach( $arrayToUpadte as $updates ){

\App\Phonelines::where( 'numberId', '=', $updates['numberId'] )->update([
'usagePer' => $updates['usagePer']
]);

}

所以我的问题是如何改进代码以尽可能减少查询?

如果我在常规 PHP 项目中有这个,我会这样做:

$newValues = [];
foreach( $arrayToUpadte as $updates ){
$newValues[] = $updates['numberId'] . ',' . $updates['usagePer'];
}

$newValues = implode( '),(', $newValues );

$mysqli -> query( "
INSERT INTO `phonelines` ( `numberId`, `usagePer` ) VALUES (" . $newValues . ")
ON DUPLICATE KEY
UPDATE `usagePer` = VALUES( `usagePer` );
" );

有没有办法在 Laravel 的框架中做到这一点?

最佳答案

你可以使用这个:

  DB::raw("INSERT INTO `phonelines` ( `numberId`, `usagePer` ) 
VALUES (" . $newValues . ") ON DUPLICATE KEY
UPDATE `usagePer` = VALUES( `usagePer` )") ;

关于mysql - 优化 多数据库更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43959220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com