如何在另一个选择中重复多次选择时进行优化?

时间:2015-10-14 13:52:35

标签: mysql select optimization

我正在计算一个大型数据库的两个日期之间的营业时间,并且它正在运行。 但是由于选择很多,请求很长。 我正在尝试优化它,但似乎我不能使用别名。 有什么想法吗?

以下是我的问题视图:

我有第一个约会:SELECT A:

/resource.js

和我的第二个日期:SELECT B:

 SELECT CASE
 WHEN (... = 9) 
 THEN ( SELECT ... )
        ELSE  (SELECT ... FROM ...
        WHERE ( (...) AND (...) AND 
        ( (...='1' OR ...'10009' OR ...='10011') AND ...='3') )
        )
    END 
  FROM ...

然后我在以下查询中复制它们(在另一个大查询中...用于包含多列的报告):

    SELECT
    CASE 
        WHEN (...) AND ...
        THEN(   SELECT ... FROM ...
              WHERE  ( (... 
              AND (...) AND (...) 
              AND (... ) )  )   
        WHEN (...) AND ...
        THEN(   SELECT ... FROM ...
                 WHERE ( ... ) AND ... AND ... AND ... AND ... )
        ELSE NULL
    END 
)

所以这最后一个查询变得很大,需要70行。有没有办法优化我不需要重新计算每个SELECT A和SELECT B 4次的事实?

1 个答案:

答案 0 :(得分:0)

计划A:使用公共数据创建临时表。

计划B:使用@variables。例如:

SELECT @A := expression1...;
SELECT @B := expression2...;
SELECT ... @A ... @B ... @A ...