-2

SQLクエリが多すぎますか?選択した月に応じて28〜31回ループするループにある次のコードがあります。データベース内の日付に応じてcssクラスを変更するために使用されます。$ rows変数が呼び出されるたびに、クエリが再実行されますか?このコードは効率的ですか?

$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">';
4

1 に答える 1

9

ユーザー数、データベースのハードウェアの種類など、非常に多くのパラメーターがあるため、何が多すぎるかについて明確な答えはありません。

あなたの質問が「これはエンドユーザーにとって遅すぎるでしょうか?」次に、コードをプロファイリングして、そのパフォーマンスを確認する必要があります。

$rows が割り当てられるたびにクエリがあるかどうかについての質問に答えるには、答えは「はい」です。$rows を取得するたびに SQL クエリを実行します。

主観的には、それは非効率的だと思います。これが私のコードである場合、SQL が月全体を取得するように書き直して (たとえば、それに応じて日付範囲を設定する)、返されたデータを PHP で処理し、データをループして月を一度に処理します。おそらく、返されたデータを 1 回ループして、日付をキーにした配列を作成し、それをまとめて内破します。

于 2012-12-14T22:07:16.350 に答える