You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL优化求助:查询拥有全部车辆类别的汽车租赁门店

全类别车辆覆盖门店SQL查询优化方案

你原有SQL的逻辑是正确的,主要冗余点在于不必要的AGENCE表关联:你的查询目标仅返回门店编号CODE_AG,而VEHICULE表本身就携带CODE_AG字段,只要业务上保证VEHICULE的CODE_AG都是AGENCE中存在的合法值,这一步JOIN完全可以省去,减少关联开销。

优化版本1(最简通用版)

直接去掉冗余的AGENCE表关联,写法简洁性能提升明显:

SELECT V.CODE_AG
FROM VEHICULE V
GROUP BY V.CODE_AG
HAVING COUNT(DISTINCT V.CODE_CATEG) = (SELECT COUNT(*) FROM CATEGORIE);

如果业务要求返回的CODE_AG必须是AGENCE表中存在的合法门店,可增加EXISTS校验,性能优于原写法的INNER JOIN:

SELECT V.CODE_AG
FROM VEHICULE V
WHERE EXISTS (
    SELECT 1 FROM AGENCE A WHERE A.CODE_AG = V.CODE_AG
)
GROUP BY V.CODE_AG
HAVING COUNT(DISTINCT V.CODE_CATEG) = (SELECT COUNT(*) FROM CATEGORIE);

优化版本2(大数据量高性能版)

如果VEHICULE表数据量极大,COUNT(DISTINCT)出现明显性能瓶颈,可以用双NOT EXISTS的集合运算逻辑实现,适合车辆类别总数不多的场景:

SELECT DISTINCT V.CODE_AG
FROM VEHICULE V
WHERE NOT EXISTS (
    -- 遍历所有车辆类别
    SELECT C.CODE_CATEG
    FROM CATEGORIE C
    -- 校验不存在当前门店未覆盖的类别
    WHERE NOT EXISTS (
        SELECT 1 
        FROM VEHICULE V2 
        WHERE V2.CODE_AG = V.CODE_AG 
        AND V2.CODE_CATEG = C.CODE_CATEG
    )
);

内容的提问来源于stack exchange,提问作者guillaumearnx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 00:24:00