多个内部联接和子查询的查询优化

the_coder_guy

我需要有关以下查询的查询优化的帮助。

SELECT pr.todate , pr.descr, cmp.company_id 
FROM employee AS emp
INNER JOIN company AS cmp ON emp.emp_comp_id = cmp.company_id 
INNER JOIN profile AS pr ON emp.acca_id = pr.profile_id 
INNER JOIN acondition ON as_id = as_ac_id
WHERE as_closed = 0 
  AND (pr.ac_act_id = 20)
  AND (pr.todate = (SELECT MIN(todate) AS Expr1 
                    FROM profile pro 
                    INNER JOIN employee empl ON empl.acca_id = pro.profile_id 
                    JOIN acondition ON as_id = as_ac_id 
                    WHERE (pro.ac_act_id = 20 
                           AND empl.emp_comp_id = cmp.company_id) 
                      AND as_closed = 0)) 

由于主查询和子查询中存在重复的联接,是否有任何方法可以在子查询中删除这些联接?

戴尔K

正如您所阐明的那样,由于子查询几乎与主查询相同,因此您可以使用窗口函数RANK作为过滤条件。RANK为领带分配相同的编号,这意味着如果每个公司的多个记录匹配,您将全部获得它们,例如

SELECT todate, descr, company_id
FROM (
    SELECT pr.todate, pr.descr, cmp.company_id
      , RANK() OVER (PARTITION BY cmp.company_id ORDER BY pr.today ASC) RankNumber
    FROM employee AS emp
    INNER JOIN company AS cmp ON emp.emp_comp_id = cmp.company_id 
    INNER JOIN profile AS pr ON emp.acca_id = pr.profile_id 
    INNER JOIN acondition ON as_id = as_ac_id
    WHERE as_closed = 0 AND pr.ac_act_id = 20
) X
where RankNumber = 1;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

内部联接和查询优化

来自分类Dev

优化包含联接和子查询的查询

来自分类Dev

查询优化(多个联接)

来自分类Dev

如何优化包含联接和子查询的查询

来自分类Dev

使用内部联接和子查询的mysql查询

来自分类Dev

优化查询包含太多内部联接和行

来自分类Dev

Mysql:左联接和内部联接在子查询中

来自分类Dev

联接和子查询

来自分类Dev

使用多个联接和谓词优化LINQ查询

来自分类Dev

使用多个联接和分组优化SQL查询(Postgres 9.3)

来自分类Dev

ActiveRecord子查询内部联接

来自分类Dev

MySQL内部联接子查询

来自分类Dev

删除-内部联接-子查询

来自分类Dev

内部联接中的子查询

来自分类Dev

SQL查询-多个内部联接

来自分类Dev

SQLite中内部联接的查询优化

来自分类Dev

如何联接到子查询内部联接

来自分类Dev

使用子查询和分组的Nhibernate内部联接的SQL

来自分类Dev

使用子查询和内部联接插入

来自分类Dev

如何在MySQL中使用子查询为报表优化多个联接的查询

来自分类Dev

MYSQL查询和内部联接

来自分类Dev

具有内部联接和多个条件的MySQL查询

来自分类Dev

通过多个内部和外部联接加快查询速度

来自分类Dev

通过多个联接优化SQL查询

来自分类Dev

在多个条件和子查询中使用LINQ左联接

来自分类Dev

3种方式与子查询和多个where子句联接

来自分类Dev

3种方式与子查询和多个where子句联接

来自分类Dev

子查询和联接的性能?

来自分类Dev

SQL子查询和联接查询