首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL查询速度优化

SQL查询速度优化
EN

Stack Overflow用户
提问于 2022-10-20 10:42:52
回答 1查看 52关注 0票数 -2

因此,我正在处理优化以下查询的问题--我已经从我的角度对它进行了充分的优化--这能进一步优化吗?

代码语言:javascript
运行
复制
select distinct name ad_type 
from dim_ad_type x  where exists  ( select 1 
                                    from sum_adserver_dimensions sum 
                                    left join dim_ad_tag_map on dim_ad_tag_map.id=sum.ad_tag_map_id and dim_ad_tag_map.client_id=sum.client_id 
                                    left join dim_site on dim_site.id = dim_ad_tag_map.site_id 
                                    left join dim_geo on dim_geo.id = sum.geo_id 
                                    left join dim_region on dim_region.id=dim_geo.region_id 
                                    left join dim_device_category on dim_device_category.id=sum.device_category_id 
                                    left join dim_ad_unit on dim_ad_unit.id=dim_ad_tag_map.ad_unit_id 
                                    left join dim_monetization_channel on dim_monetization_channel.id=dim_ad_tag_map.monetization_channel_id 
                                    left join dim_os on dim_os.id = sum.os_id 
                                    left join dim_ad_type on dim_ad_type.id = dim_ad_tag_map.ad_type_id 
                                    left join dim_integration_type on dim_integration_type.id = dim_ad_tag_map.integration_type_id 
                                    where sum.client_id = 50 
                                    and dim_ad_type.id=x.id 
                                    ) 
order by 1 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-20 14:25:53

您的查询虽然加入了ok,但总体上是一个臃肿。您在外部使用dim_ad_type表,只是为了确保它也存在于内部。你还有所有那些与最终结果无关的连接,它们为什么会出现在那里呢?我会通过颠倒逻辑来简化。通过跟踪相同dim_ad_type表的内部查询,我发现下面是直接行。sum -> dim_ad_tag_map -> dim_ad_type.就这么办吧。

代码语言:javascript
运行
复制
select distinct
        dat.name Ad_Type
    from
        sum_adserver_dimensions sum
            join dim_ad_tag_map tm
                on sum.ad_tag_map_id = tm.id
                and sum.client_id = tm.client_id
                join dim_ad_type dat
                    on tm.ad_type_id = dat.id 
    where
        sum.client_id = 50 
    order by 
        1

您的查询运行了所有的dim_ad_types,然后查找所有的和以找到匹配的。从一个客户端开始直接运行它,然后使用联接直接运行它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74138535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档