내 사이트의 데이터 페이지 속도를 높이려고합니다. 나는 다음과 같은 쿼리를 사용하고 싶습니다,하지만 내가 설명 할 때 그것이 이상 40,000 행을 검색 할 필요가 말한다 :효율적인 페이지 매김 (
SELECT `Item`.`id`, `User`.`id`
FROM `items` AS `Item`
LEFT JOIN `users` AS `User`
ON (`Item`.`submitter_id` = `User`.`id`)
WHERE `Item`.`made_popular` < "2010-02-08 22:05:05"
AND `Item`.`removed` != 1
ORDER BY `Item`.`made_popular` DESC
LIMIT 26
그러나 나는 "made_popular"에 대한 하한을 추가하는 경우에만 필요 필드를 99 행 (두 날짜 사이의 항목 수)을 스캔하십시오.
SELECT `Item`.`id`, `User`.`id`
FROM `items` AS `Item`
LEFT JOIN `users` AS `User`
ON (`Item`.`submitter_id` = `User`.`id`)
WHERE `Item`.`made_popular` < "2010-02-08 22:05:05"
AND `Item`.`made_popular` > "2010-02-07 22:05:05"
AND `Item`.`removed` != 1
ORDER BY `Item`.`made_popular` DESC
LIMIT 26
두 쿼리는 "made_popular"열에 대한 색인을 사용합니다. "제거 된"항목이 없다고 가정 할 때 두 경우 모두 26 행만 스캔하면 안됩니까? 솔루션은 두 번째 쿼리를 사용하여 26 개 항목을 줄 수있는 낮은 경계를 추가 할 수 있다고 생각합니다. 그러나 그런 해결 방법을 수행해야한다는 것이 이상하게 보입니다.
LIMIT N, M은 반환 할 결과의 오프셋 (N) 및 개수를 설정할 수 있습니다. LIMIT 1,26이 실적을 개선합니까? –