요즘 MySQL에서 특정 쿼리를 사용하고 있습니다. 500,000 개 이상의 레코드가있는 테이블이 있습니다. |MySQL 정렬 결과가 오래 걸림
을 : tableOrder DESC의 LIMIT 여기에 1
BY items
FROM
SELECT * (itemlist_id = 115626)을 주문 설명한다 : 여기에 쿼리 실행되고있다 1 | 단순 | 항목 | 전체 | NULL | NULL | NULL | NULL | 587113 | 사용 장소; filesort 사용 | |
: 여기
그리고
는 process_list 항목입니다 252996 | 루트 | localhost | itemdb | 쿼리 | 0 | 정렬 결과 | SELECT * FROMitems
WHERE (itemlist_id = 115642) ORDER BY tableOrder DESC LIMIT 1 |
이 쿼리로 인해 처리하는 데 10 분이 걸릴 수 있습니다. 수동으로 실행하면 빠르게 완료됩니다. (세트 1 행 (0.86 초))
감사
당신은 조금 질의items (itemList_id, TableOrder)
에 인덱스를 생성하고 다시 작성해야
천천히 정렬하고 레코드를 찾을 수 없습니까? 인덱스되지 않은 필드에 500k + 레코드의 테이블 스캔이있는 경우 시간이 오래 걸릴 수 있습니다. 그리고 "수동"의 신속성은 MySQL (또는 OS)가 이전 시도의 데이터에 캐시되어 훨씬 빠르게 실행되기 때문일 수 있습니다. –