에 따라 달라집니다MySQL을 사용 filesort 내가이 쿼리가 LIMIT
SELECT *
FROM `content` AS `c`
WHERE c.module = 20
AND c.categoryID
IN ('50', '31', '16', '10')
ORDER BY `c`.`released` DESC
LIMIT 5
을 ... 그리고 나는이 기계가 있습니다. 첫 번째 머신에서 EXPLAIN 쿼리는 LIMIT가 3보다 작 으면 'Where using'을 추가 필드로 반환합니다. LIMIT가 3보다 크면 'Where using; filesort 사용 '(filesort는 3보다 큰 한계로 실행됩니다).
다른 컴퓨터에서는 동일한 DB 및 동일한 쿼리에 대해 서로 다릅니다. LIMIT이 filesort가 실행되는 것보다 60보다 큰 경우입니다.
두 시스템에서 my.cnf는 동일합니다 !!!
filesort를 사용하는 것이 LIMIT에 어떻게 의존하고이 종속성을 어떻게 변경할 수 있는지 아는 사람이 있습니까? MySQL의 LIMIT Optimization에서
정확하게 관련되지는 않지만 테이블에 어떤 색인이 있습니까? –
동일한 db, 동일한 쿼리. 테이블에있는 동일한 (양) 데이터? 같은 인덱스? –
"동일한 DB"라고 가정합니다. 동일한 정보가 포함되어 있지만 각 데이터베이스마다 서로 다른 실제 디스크를 사용하고 있음을 의미합니다. 그렇다면 두 데이터베이스 모두에서'OPTIMIZE TABLE content'를 실행 한 다음 다시 테스트 할 것을 제안합니다. 이렇게하면 잠재적으로 디스크의 인덱스가 재정렬되고 모든 인덱스의 통계가 업데이트되므로 (더 중요한 것은) 어떤 인덱스를 사용해야하는지에 대한 의사 결정 방식이 변경 될 수 있습니다. –