2014-06-20 2 views
1

SQL 쿼리를 while 루프로 제한하는 방법을 찾으려고 스택 오버플로를 둘러 보면서이 코드를 발견했습니다.이 코드와 SQL LIMIT 절을 사용의 차이점은 무엇입니까 :SQL LIMIT VS 루프 제한

$count = 0; 

while ($count < 4 && $info = mysql_fetch_assoc($result)) { 
    //stuff 

    $count++; 
} 

Q 1?

Q 2 :LIMIT을 사용하는 대신 어떤 이유로이 코드를 사용하고 싶습니까?

답변

1
  1. 이 코드를 사용하면 MySQL 서버는 모든 결과를 클라이언트에 보내지 만 클라이언트는 4 번째 줄 이후의 모든 것을 무시합니다. 따라서 서버는 더 많은 작업을 수행해야하며 클라이언트와 서버간에 더 많은 대역폭이 사용됩니다.

  2. 그들은 그들이 단지 그러나 처음 4 표시 할지라도, 총 행을 선택 얼마나 많은 알아 mysql_num_rows()을 사용할 수 있습니다

    는, MySQL은 LIMIT와 것을 할 수있는 방법 제공 - 당신은 넣을 수 있습니다을 SQL_CALC_FOUND_ROWS 옵션에서 SELECT 절을 입력 한 다음 SELECT FOUND_ROWS()을 사용하여 총 행 수를 얻으십시오. 따라서이 기능에 대해 알지 못하는 것을 제외하고는 아무런 이유가 없습니다.

0

Everyarming @Barmar on right. 이와 같은 코드를 따르면 결과 집합이 커지기 시작하면서 많은 문제가 발생할 수 있습니다. 데이터베이스가 그 일을 잘 수행하도록하고, 원하는 결과의 한계를 제공하게하십시오. 수천 개의 행이있는 명령 행 클라이언트에서 LIMIT 절이없는 SELECT를 수행 할 때 일어나는 현상을 생각해보십시오. 그냥 계속 진행됩니다.

한 가지 더, 나는 추천하지 않는 함수로 mysql_num_rows()를 사용하지 않는 것이 좋습니다. mysqli 또는 PDO와 함께 할 수도 있습니다.