我正在计算一个大型数据库的两个日期之间的营业时间,并且它正在运行。 但是由于选择很多,请求很长。 我正在尝试优化它,但似乎我不能使用别名。 有什么想法吗?
以下是我的问题视图:
我有第一个约会: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次的事实?
答案 0 :(得分:0)
计划A:使用公共数据创建临时表。
计划B:使用@variables。例如:
SELECT @A := expression1...;
SELECT @B := expression2...;
SELECT ... @A ... @B ... @A ...