有多少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">';
答案 0 :(得分:9)
对于什么太多没有明确的答案,因为有太多的参数,例如:有多少用户,你的数据库是什么类型的硬件等等。
如果您的问题是“对最终用户来说这会太慢吗?”然后你应该分析代码,看看它是如何运作的。
要回答关于是否每次分配$ rows的问题,是否有查询,答案是肯定的 - 每次获得$ rows时都会运行SQL查询。
主观上,我认为效率低下。如果这是我的代码,我会重写它以便SQL获得整个月(例如相应地设置日期范围),然后在PHP中处理返回的数据,循环数据并一次处理月份。我可能会循环返回一次返回的数据,构建一个围绕日期键入的数组,然后将它们全部内容组合在一起。