2010-12-13 2 views
2

매우 큰 사용자 테이블에서 SELECT * FROM user LIMIT 5과 같은 쿼리의 성능이 걱정됩니다. 모든 레코드를 선택하고 5로 제한합니까?LIMIT은 언제 적용됩니까? 제한하기 전에 모든 결과를 선택합니까?

은 구체적으로 다음과 같은 쿼리는 내가 내가 제한하고있어 경우 IN() 절에있는 모든 ID를 포함하는 이해가되지 않습니다 실현 ... 제한하기 전에

SELECT * FROM assets WHERE asset_id IN(1,2,3,4,5,6,7,8,9,10) LIMIT 5 

모든 assetids을 선택하지만 나는 좋겠 이 상황에서 mysql이 어떻게 작동하는지 알고 싶다.

감사합니다.

답변

1

이것은 쿼리에 따라 다릅니다. LIMIT이 적용되는 방법에 대한 자세한 설명은이 페이지를 참조하십시오 : 특정 쿼리 http://dev.mysql.com/doc/refman/5.0/en/limit-optimization.html

를, 다음이 적용됩니다 : 는 "즉시 MySQL은 클라이언트에 행 필요한 수의 보내신 것 같이, 그것은 쿼리하지 않는를 중단 SQL_CALC_FOUND_ROWS를 사용하고 있습니다. "

희망이 있습니다.

0

쿼리는 모든 행을 asset_id 열로 검색해야하므로 색인을 추가하는 것이 좋습니다. 내 경험에 의하면, 결과 세트가 내부적으로 (즉, 주문 알 수 없음) 있기 때문에 항상 order by 절을 설정하려고합니다. 그러면 반환 된 5 개의 결과가 실제로 원하는 결과인지 알 수 없습니다.

+0

"검색어로 검색해야합니다."- 확실합니까? – zerkms

관련 문제