0
나는이 쿼리를 실행하는 데 오랜 시간이 걸리는 다른 사람이 구성했으며,이를 최적화 할 방법이 있는지 궁금해합니다.
이 mysql 쿼리 (union 포함)를 최적화 할 수 있습니까?
SELECT COUNT(t2.ticker)/'99' AS PctNewHigh_Yearlyarray
FROM (
SELECT t1.ticker, ROUND(SUM(t1.close) , 2) as DailyChange
FROM (
SELECT b.ticker, b.close
FROM broad b
WHERE b.Date1 = '2012-07-30 00:00:00'
UNION
SELECT b.ticker, MAX(b.close) * -1
FROM broad b
WHERE b.Date1 > '2011-07-31 00:00:00'
GROUP BY b.Ticker
ORDER BY ticker
) t1
GROUP BY t1.ticker
) t2
WHERE DailyChange = 0
데이터베이스 구조는 다음과 같습니다
CREATE TABLE `broad` (
`idbroad` int(11) NOT NULL AUTO_INCREMENT,
`Date1` datetime DEFAULT NULL,
`Date2` varchar(10) DEFAULT NULL,
`Ticker` varchar(45) DEFAULT NULL,
`Open` double DEFAULT NULL,
`High` double DEFAULT NULL,
`Low` double DEFAULT NULL,
`Close` double DEFAULT NULL,
`Vol` double DEFAULT NULL,
`TC2k_IG` varchar(100) DEFAULT NULL,
`MS2` varchar(45) DEFAULT NULL,
PRIMARY KEY (`idbroad`),
KEY `indx_Date1` (`Date1`),
KEY `indx_Ticker` (`Ticker`),
KEY `indx_High` (`High`),
KEY `indx_Close` (`Close`),
KEY `indx_TC2k_IG` (`TC2k_IG`),
KEY `indx_Vol` (`Vol`),
KEY `indx_Open` (`Open`),
KEY `indx_Low` (`Low`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
난 당신이 도움이 더 많은 데이터가 필요한 경우 알려 주시기 수 있기를 바랍니다.
모든 데이터는 예를
INSERT INTO `broad` (`idbroad`, `Date1`, `Date2`, `Ticker`, `Open`, `High`, `Low`, `Close`, `Vol`, `TC2k_IG`, `MS2`) VALUES
(726, '2002-10-10 00:00:00', '20021010', 'A', 10.95, 11.13, 10.8, 10.85, 48534, 'EXAMPLE NAME', '');
검색어가 반환해야하는 내용에 대해 간략하게 설명해 주시겠습니까? – Grampa
각 시세 표시기에는 하루에 '닫기'가 하나뿐입니까? – Jodaka
예 @jodaka, 나는 하나의 결과로 질문을 갱신 할 것이다. – chifliiiii