초 제한 쿼리를 실행하는 경우 5, $ sendOut 5를 매개 변수로 사용하여이 쿼리를 다음과 같이 실행하려고합니다. 5 - 5 + 5, 같은 방식으로 다음 쿼리는 제한 10에서 15까지 실행됩니다. 어떻게 할 수 있습니까?mySQL에서 동적으로 한도를 변경하는 방법
답변
LIMIT에는 2 개의 매개 변수가있을 수 있습니다. 우리의 경우 나는 당신이이 같은 LIMIT를 사용할 수 있다고 생각 :
LIMIT $lastOutputId, 5
문서 :
그런 다음 버튼을 통해 동적 해당 번호를 foreach는 루프에서 객체를 넣어 만드는 http://php.about.com/od/mysqlcommands/g/Limit_sql.htm
mysql의 제한 옵션은 start, length의 두 매개 변수를 취할 수 있습니다. 따라서 당신은 할 수 있습니다 :
limit 0,5
를 얻기 위해 처음 5
limit 5,5
는 향후 5
limit 10,5
등 다음을 얻을 얻을 당신은 단지 첫 번째 번호를 설정해야 lastOutputId를 기반으로합니다.
페이지 스크롤에서 쿼리를 호출 할 때 정적으로 제한을 줄 수는 없습니다. 두 번째 쿼리가 재귀 적으로 호출되고 있습니다. –
class celeb {
public function getAllCelebDataFinal ($database,$celebrityId,$lastOutputId, $limit)
// Your query
}
}
$numberOfRepeat = 5; //just example
$limit = new Celeb();
$limit->getAllCelebDataFinal($val, $val, $val, $val);
} 또는 변수를 가져 오면 완료됩니다.
$limit = $_REQUEST['limit'];
$start = $_REQUEST['start'];
$getRec = "SELECT * FROM MyUser LIMIT $start , $limit";
위의 답변에 동의합니다. LIM IT 걸립니다 중 2 개 매개 변수 또는 1 :
- SELECT ... LIMIT가 num_records 오프셋
- 을 SELECT ... LIMIT의 num_records을 -> 동등한 나는이 방법에 대해 경고 않습니다 0 num_records
를 제한하려면 성능상의 이유로.
SQL SELECT 문은 웹 사이트가 5 줄을 원할 때마다 모든 MySQL 서버 소프트웨어 계층 (연결, 인증, 쿼리 구문 분석, 쿼리 결과 캐시, 저장소 엔진, 결과 직렬화)을 거칩니다.
LIMIT 1000000,10에서 뭔가를 선택하면 실제로 테이블에서 1,000,010 개의 레코드가 읽히고 저장소 엔진에 큰 부하가 발생합니다! 첫 번째 1M 라인은 결과 직렬화에서 무시됩니다.
하나의 쿼리에서 전체 데이터를 가져 와서 결과를 웹 서버의 로컬 메모리 또는 memcached와 같은 공유 휘발성 저장소에 보관하는 것이 더 효율적일 수 있습니다.
ORDER BY addDate DESC LIMIT $ lastOutputId, 5? – ethrbunny
무엇이'$ lastOutputId'입니까? 왜 그렇게 부르는거야? 왜'$ lastOutputRank' 또는'$ lastOutputRangeStart'가 아닌가? 왜'Id'인가? – didierc