如题 单跑下面的 select 语句只需要几十毫秒,但是select insert 确要几秒,实际上insert的数据并不多只有几十条
INSERT INTO mysql_db.shuju.a_metrics (etl_time,dimension,metrics_name,value)
SELECT
DATE_FORMAT(DATE_SUB('2024-12-12 11:00:00', INTERVAL 1 hour), '%Y%m%d%H%i%s') AS etl_time,
orderInfo.start_city AS dimension,
'金额' AS metrics_name,
SUM(IFNULL(a.estimate_basic_amount, 0)) AS value
FROM
db_a.order_info_a a
LEFT JOIN db_a.order_info_b b ON
a.order_id = b.order_id
LEFT JOIN db_a.dim_order d ON
a.source = d.source
WHERE
a.product_type_id = 1
AND a.time_dispatch_done >= UNIX_TIMESTAMP(DATE_SUB('2024-12-12 11:00:00', INTERVAL 1 hour))
AND a.time_dispatch_done < UNIX_TIMESTAMP('2024-12-12 11:00:00')
AND a.create_time >= CAST(DATE_SUB('2024-12-12 11:00:00', INTERVAL 1 day) AS DATETIME)
AND b.create_time >= CAST(DATE_SUB('2024-12-12 11:00:00', INTERVAL 1 day) AS DATETIME)
AND d.source_belong = 'xx渠道'
GROUP BY
a.start_city
上图是selectinsert 扫描行数,与 a b 表总行数一致,
上图是单select 的扫描行数,与过滤后的行数一致,感觉没有把过滤数据进行下推