MySQLは時間軸を取得して、ひざまずいて最適化を求めます


データ・ウェアハウスの構築中に時間のように、さまざまな形式の時間軸を取得することがよくあります.oracleは強力です.簡単に取得できます.例えば、次のようにします.
SELECT TRUNC(SYSDATE, 'MM') + ROWNUM - 1
  FROM DUAL
CONNECT BY ROWNUM <= TO_NUMBER(TO_CHAR(LAST_DAY(SYSDATE), 'dd'))

mysqlの中で私は今このようにするしかなくて、達人が最適化することを望んで、ついでに私のSQLの能力を昇格させます
 
 
SELECT DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY) ,INTERVAL a.idx DAY) FROM 
(SELECT 0 idx
UNION ALL
SELECT 1 idx
UNION ALL 
SELECT 2
UNION ALL 
SELECT 3
UNION ALL 
SELECT 4
UNION ALL 
SELECT 5
UNION ALL 
SELECT 6
UNION ALL 
SELECT 7
UNION ALL 
SELECT 8
UNION ALL 
SELECT 9
UNION ALL 
SELECT 10
UNION ALL 
SELECT 10
UNION ALL 
SELECT 11
UNION ALL 
SELECT 12
UNION ALL 
SELECT 13
UNION ALL 
SELECT 14
UNION ALL 
SELECT 15
UNION ALL 
SELECT 16
UNION ALL 
SELECT 17
UNION ALL 
SELECT 18
UNION ALL 
SELECT 19
UNION ALL 
SELECT 20
UNION ALL 
SELECT 21
UNION ALL 
SELECT 22
UNION ALL 
SELECT 23
UNION ALL 
SELECT 24
UNION ALL 
SELECT 25
UNION ALL 
SELECT 26
UNION ALL 
SELECT 27
UNION ALL 
SELECT 28
UNION ALL 
SELECT 29
UNION ALL 
SELECT 30) a  WHERE a.idx<DAY(LAST_DAY(CURDATE()))