0
이 조정이 가능한지 조언 해주십시오.SQL 쿼리 속도를 높이는 방법
테이블 :
CREATE TABLE UTIL_DAY (
CompID varchar(15) collate utf8_czech_ci NOT NULL,
TestplanID int(10) unsigned NOT NULL default '0',
FromDate datetime NOT NULL default '0000-00-00 00:00:00',
ToDate datetime NOT NULL default '0000-00-00 00:00:00',
Interval int(11) NOT NULL default '0',
Variant varchar(25) collate utf8_czech_ci default NULL,
WO_ID int(11) default NULL,
SAPTime int(5) default NULL,
UseTime int(5) NOT NULL,
MeasureCount int(10) unsigned NOT NULL,
KEY CompID (CompID),
KEY TestplanID (TestplanID),
KEY WO_ID (WO_ID),
KEY FromDate (FromDate),
KEY Variant (Variant)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
현재 쿼리
UPDATE UTIL_DAY UDAY SET TestplanID = (SELECT TestplanID
FROM (SELECT UD_U.Variant,UD_U.WO_ID,VS.TestplanID
FROM (SELECT UD.Variant,UD.WO_ID
FROM UTIL_DAY UD WHERE SUBSTR(CompID,1,3) <> 'AOI'
GROUP BY UD.Variant,UD.WO_ID) UD_U
JOIN VARIANTS V ON UD_U.Variant = V.Variant
JOIN VARIANT_STATUS VS ON V.VariantID = VS.VariantID
JOIN TESTPLANS_WO_ID TW ON UD_U.WO_ID = TW.WO_ID
WHERE VS.TestplanID = TW.TestplanID
GROUP BY UD_U.Variant,UD_U.WO_ID) TP
WHERE TP.Variant = UDAY.Variant AND TP.WO_ID = UDAY.WO_ID)
그리고 내 업데이트는 임시 테이블에 있습니다 :
CREATE TEMPORARY TABLE UTIL_DAY_TEMP (
Variant varchar(25) COLLATE 'utf8_czech_ci' NOT NULL,
WO_ID int unsigned NOT NULL,
TestplanID int unsigned NOT NULL,
PRIMARY KEY Variant_WO_ID (Variant, WO_ID)) COMMENT='' ENGINE='InnoDB' COLLATE 'utf8_czech_ci';
INSERT IGNORE INTO UTIL_DAY_TMP (SELECT UD_U.Variant,UD_U.WO_ID,VS.TestplanID
FROM (SELECT UD.Variant,UD.WO_ID
FROM UTIL_DAY UD WHERE SUBSTR(CompID,1,3) <> 'AOI'
GROUP BY UD.Variant,UD.WO_ID) UD_U
JOIN VARIANTS V ON UD_U.Variant = V.Variant
JOIN VARIANT_STATUS VS ON V.VariantID = VS.VariantID
JOIN TESTPLANS_WO_ID TW ON UD_U.WO_ID = TW.WO_ID
WHERE VS.TestplanID = TW.TestplanID
GROUP BY UD_U.Variant,UD_U.WO_ID);
UPDATE UTIL_DAY UDAY SET TestplanID = (SELECT TestplanID
FROM UTIL_DAY_TEMP TP
WHERE TP.Variant = UDAY.Variant AND TP.WO_ID = UDAY.WO_ID);
이 개선은 400 %로 2milion 행을 통해 쿼리를 가속화. 그러나이 같은 결과는 똑같은 결과입니까? 답변 해 주셔서 감사합니다.
에 복합 인덱스에 대한 설명서를 확인 어떤 인덱스가 당신을 도울 것입니다 경우 그 후
, 파악 양의 데이터를 무작위로 추출한 다음 두 쿼리 모두에서 동일한 결과를 얻었습니까? – Patashu