2012-12-14 3 views
-3

얼마나 많은 SQL 쿼리가 너무 많습니까? 나는 선택한 달에 따라 28-31 번 반복되는 루프에있는 다음 코드 조각을 가지고있다. 그것은 데이터베이스의 날짜에 따라 CSS 클래스를 변경하는 데 사용됩니다. $ rows 변수를 호출 할 때마다 쿼리가 다시 실행됩니까? 이 코드가 효율적입니까?얼마나 많은 SQL 쿼리가 너무 많습니까?

$sql = ("SELECT * FROM dates WHERE dates.from<='".$date."' AND dates.to>='".$date."'"); 
$result = mysql_query($sql); 
$rows = mysql_num_rows($result); 
if ($rows >= 1) 
{ 
    $row = mysql_fetch_array($result); 

    if ($rows == 2) 
     $calendar .= '<td class="calendar-day-booked">'; 
    else 
    { 
     if ($row['from'] == $date) 
      $calendar .= '<td class="calendar-day-from">'; 
     elseif ($row['to'] == $date) 
      $calendar .= '<td class="calendar-day-to">'; 
     else   
      $calendar .= '<td class="calendar-day-booked">'; 
    } 
} 
else 
    $calendar.= '<td class="calendar-day">'; 
+0

코드의 효율성에 대해서는 아무런 문제가 없습니다. – samayo

+0

데이터베이스에서 하나의 쿼리 만 볼 수 있습니다. 내가 놓친 게 있니? –

+1

37.98 마법의 숫자. – itachi

답변

8

너무 많은 매개 변수가 있기 때문에 확실한 답은 없습니다. 예 : 얼마나 많은 사용자, 데이터베이스가 어떤 종류의 하드웨어입니까?

"최종 사용자에게 너무 느려 집니까?" 그런 다음 코드를 프로파일 링하고 코드 수행 방법을 확인해야합니다.

$ rows가 할당 될 때마다 쿼리가 있는지에 대한 대답을 얻으려면 $ 행을 얻을 때마다 SQL 쿼리를 실행합니다.

주관적으로 비효율적이라고 말하고 싶습니다. 이 코드가 내 코드라면 SQL이 전체 월 (예 : 날짜 범위 설정)을 얻은 다음 PHP에서 반환 된 데이터를 처리하고 데이터를 루핑하여 한 번에 한 달을 처리하도록 다시 작성합니다. 아마도 반환 된 데이터를 한 번 루프하여 날짜 주위에 키가있는 배열을 작성한 다음 모두 함께 함축시킬 것입니다.

관련 문제