SELECT DISTINCT not in 改为使用 JOIN 操作

SELECT    *   from    crawl_public.d_fund_nv     where  statistic_date='2023-09-20' and fund_id not in (SELECT  distinct  fund_id   from    base_public.fund_nv_source     where  statistic_date='2023-09-20' )

优化这个sql

对于您提供的 SQL 查询语句,以下是一些可能的优化建议:

1. 使用 JOIN 替代子查询:将子查询中的 `SELECT DISTINCT` 改为使用 JOIN 操作,可以提高查询性能。这样可以避免在每次执行子查询时进行重复的计算。

```sql
SELECT d.*
FROM crawl_public.d_fund_nv AS d
LEFT JOIN (
    SELECT DISTINCT fund_id
    FROM base_public.fund_nv_source
    WHERE statistic_date = '2023-09-20'
) AS b ON d.fund_id = b.fund_id
WHERE d.statistic_date = '2023-09-20' AND b.fund_id IS NULL;
  1. 索引优化:对于经常用于过滤条件的列,可以考虑为这些列创建索引,以提高查询性能。在这个查询中,对 crawl_public.d_fund_nv 表的 statistic_date 列和 fund_id 列,以及 base_public.fund_nv_source 表的 statistic_date 列和 fund_id 列创建索引可能会有帮助。
-- 创建索引示例
CREATE INDEX idx_d_fund_nv_statistic_date ON crawl_public.d_fund_nv (statistic_date);
CREATE INDEX idx_d_fund_nv_fund_id ON crawl_public.d_fund_nv (fund_id);
CREATE INDEX idx_fund_nv_source_statistic_date ON base_public.fund_nv_source (statistic_date);
CREATE INDEX idx_fund_nv_source_fund_id ON base_public.fund_nv_source (fund_id);

请注意,优化 SQL 查询的效果取决于数据库的结构、数据量和配置等因素。建议在进行任何更改之前,在测试环境中进行适当的基准测试和性能评估。文章来源地址https://uudwc.com/A/DN3Od


原文地址:https://blog.csdn.net/qq_44821149/article/details/133072394

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

上一篇 2023年09月23日 22:40
基于Spring Boot的医院预约挂号系统设计与实现(源码+lw+部署文档+讲解等)
下一篇 2023年09月23日 22:40