MySQL 데이터베이스에서 70 초 이상 실행되는 쿼리를 실행하려고합니다. 인덱스가 사용되지 않는 이유에 대해 머리를 쓰고 있습니다.MySQL의 느린 쿼리 - 파일롯 사용
다음은 쿼리 :
SELECT PriceId, InstrumentId, Date, Open, High, Low, Close, Volume, UnadjustedClose
FROM price
ORDER BY InstrumentId, Date DESC
가격 테이블 (기타 인덱스 사이) InstrumentId와 인덱스, 날짜가 있습니다. 테이블 자체는 8 천만 개의 행을 가지며 2 개의 정수, 날짜, 5 자리 및 5 자리로 구성됩니다.
Explain 명령은 가능한 키, key 및 ref에 대해 ALL, Null 유형을 가지고 있으며 시스템이 filesort를 사용한다고 알려줍니다.
시스템에서 얻을 수있는 가장 좋은 방법인가요? 정렬을 더 빨리 수행하기 위해 색인이 사용될 것으로 예상했습니다.
추가 :
다음은 테이블 정의입니다 :
PriceId int PK, NN, AI
InstrumentId int NN
Date Date NN
Open Decimal(12,4)
High Decimal(12,4)
Low Decimal(12,4)
Close Decimal(12,4)
UnadjustedClose Decimal(12,4)
Volume BigInt
Indexes:
Primary -> PriceId
IX_InstrumentId -> InstrumentId
IX_Date -> Date
IX_InstrumentDate -> InstrumentId, Date
설명 출력은 다음과 같습니다
id: 1
select_type: Simple
table: price
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 77926335
Extra: using filesort
당신은 8 천만 개의 행을 가지고 있습니다. 정상입니다 ... 그리고 대역폭이 영향을 미칠 수 있습니다. 코어 수와 데이터 센터 프로세서도 – angel
입니다. 테이블 정의와 'EXPLAIN' 출력을 게시 할 수 있습니까? – Xint0
80 백만 행을 모두 한꺼번에 가져와야합니까? – newtover