我对这组查询遇到了很大的困难。我找不到加速第二个查询的方法。我尝试将第一个查询作为第二个查询的子查询加入,逐个运行第一个查询结果和当前设置,所有这些都证明非常慢。
我想简单地为第二个查询添加一个限制而不是这个hocky的东西,但我们的mysql版本太旧了不支持它。由于某种原因,它也将EXPLAIN
视为语法错误,这是无益的。
如何减少执行时间?
$limitQuery = $pdo->prepare("
SELECT r.supplier_option_code FROM third_party_raw_stock_price AS r ORDER BY r.id LIMIT 100
");
$limitQuery->execute();
$limitIds = $limitQuery->fetchAll();
$limitIds = implode("', '",array_column($limitIds, 'supplier_option_code'));
$limitQuery = null;
$linkColumn = 'supplier_code';
$thirdPartyId = 'FS';
$migrateQuery = $pdo->prepare("
UPDATE third_party_raw_stock_price AS r
JOIN options_new AS o
ON o.".$linkColumn." = r.supplier_option_code AND r.supplier_prefix = '".$thirdPartyId."'
JOIN third_party_config AS t
ON t.code = '".$thirdPartyId.""'
SET o.price = '989.99', o.cost_price_variation = '3.33', o.stock = '7'
WHERE r.supplier_option_code IN ('$limitIds')
");
$migrateQuery->execute([':config' => $thirdPartyId]);