Mysql嵌套查询速度非常慢
我有一张名为vehicle_plate的表格,如下所示: 并且上表的总记录是715210,我想按特定区域和省份的最新或更新的车牌类型统计车辆,但是当我运行下面的查询时,查询速度非常慢。我的意思是我从来没有得到过结果,只是加载而已Mysql嵌套查询速度非常慢,mysql,Mysql,我有一张名为vehicle_plate的表格,如下所示: 并且上表的总记录是715210,我想按特定区域和省份的最新或更新的车牌类型统计车辆,但是当我运行下面的查询时,查询速度非常慢。我的意思是我从来没有得到过结果,只是加载而已 SELECT `pt`.`pt_dr` AS TYPE , COUNT( DISTINCT vp.vehicle_v_id ) AS vehicles, `p`.`province_dr` AS province_nam
SELECT `pt`.`pt_dr` AS
TYPE , COUNT( DISTINCT vp.vehicle_v_id ) AS vehicles, `p`.`province_dr` AS province_name, `p`.`id` AS id, vp.vehicle_v_id
FROM (
`vehicle_plate` AS vp
)
LEFT JOIN provinces AS p ON p.id = vp.provinces_province_id
LEFT JOIN plate_types AS pt ON pt.id = vp.plate_types_pt_id
WHERE 1
AND p.zone_zone_id = '1'
AND p.id = '1'
AND vp.id
IN (
SELECT vp1.id
FROM vehicle_plate AS vp1
GROUP BY vp1.vehicle_v_id
)
GROUP BY vp.vehicle_v_id, `vp`.`plate_types_pt_id`
ORDER BY `p`.`zone_zone_id` , `vp`.`provinces_province_id` , `vehicles` DESC
注意:一辆车可能有多个车牌,我想计算更新的或最新的车牌类型
样本数据:
有时内部联接比in子句更有效
SELECT `pt`.`pt_dr` AS
TYPE , COUNT( DISTINCT vp.vehicle_v_id ) AS vehicles, `p`.`province_dr` AS province_name, `p`.`id` AS id, vp.vehicle_v_id
FROM (
`vehicle_plate` AS vp
)
LEFT JOIN provinces AS p ON p.id = vp.provinces_province_id
LEFT JOIN plate_types AS pt ON pt.id = vp.plate_types_pt_id
INNER JOIN (
SELECT vp1.id as id
FROM vehicle_plate AS vp1
GROUP BY vp1.vehicle_v_id
) t on vp.id = t.id
WHERE 1
AND p.zone_zone_id = '1'
AND p.id = '1'
GROUP BY vp.vehicle_v_id, `vp`.`plate_types_pt_id`
ORDER BY `p`.`zone_zone_id` , `vp`.`provinces_province_id` , `vehicles` DESC
请展示样本数据和您想要的输出。您看过解释计划了吗?@EdHeal您是什么意思?我应该多解释一点吗?关于这一点,我还不清楚。请显示样本数据以及输出,以明确您试图进行的计算。