与多个连接在一起,更快地进行查询



基本上,我正在从多个视图中选择多个列(准确地说是18列和8个视图(。总运行时间大约为36分钟。我尝试清理所有内容以使其更可读,但现在花费更长的时间。50分钟,然后去。

这是正在发生的事情的示例:

    SELECT (18 columns)
           -- different cases happening here
    FROM view1 m
    left join  view2 dep  on --something        
    inner join view3 c on --something 
    inner join view4 cl on --something 
    inner join view5 cc on --something  
    inner join view6 cp on --something 
    inner join view7 mp on --something 
    inner join view8 ma on --something 

我只是想获取我的专栏,但它们来自几个不同的地方。有什么方法可以更快地做到这一点?是否需要创建一个临时表?如果是这样,我应该如何实施它会提高查询速度?

谢谢。

每个加入都会在查询中添加时间/资源,当您反对视图时,您将在查询中添加每个视图中的每个加入。而且,仅需一个不表现的视图即可减慢其他所有内容。我可以想到的三个选项:

  1. 摆脱视图,直接加入其中的桌子。仅选择所需的连接,只选择所需的列。确保连接中的每一列都有一个索引(即"从TBL1 join tbl1上的TBL2。li>
  2. 如果您可以处理"旧数据",则可以在晚上运行查询,并填充一个可以在第二天对其进行查询的扁平桌子。寻找有关创建数据仓库的提示。
  3. 请在上面的#1中获取提示,然后尝试优化每个视图。

最新更新