Mysql嵌套查询速度很慢

标签 mysql

我有一个名为 vehicle_plate 的表,如下所示:

enter image description here

上面的表总记录是715210,我想按特定区域和省份的最新或更新的车牌类型统计车辆,但是当我运行下面的查询时,查询速度非常快慢的。我的意思是我从来没有得到它刚刚加载的结果。

            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

注意:一辆车可能有多个车牌,我想统计更新或最新的车牌类型。

示例数据: enter image description here

最佳答案

有时内部联接比 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

关于Mysql嵌套查询速度很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41320081/

相关文章:

mysql - SQL 中的语法错误 SQL 状态 :42601

php - 如何从表中的不同行获取多个结果?

php - 选择数组()

php - HY :093 Invalid parameter number: parameter was not defined

php - MySQL GROUP BY 计数

MySQL:使用子静态(子查询)汇总每周统计信息

java - 尝试连接 docker mysql 时,ResourcePool 无法从其主要工厂或源错误获取资源

php - 搜索 - 空条件字段

php - 从 services.msc 启动服务时出现 mysql 错误

php - SQLSRV 从 MySQL 转换数据表时参数无效