【问题标题】:How many sql queries is too many? [closed]多少个sql查询太多了? [关闭]
【发布时间】:2012-12-14 22:01:19
【问题描述】:

多少 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">';

【问题讨论】:

  • 代码imo效率没有问题
  • 我在数据库中只看到一个查询。我错过了什么吗?
  • @MikeBrant OP 说他们在循环中拥有该代码。循环未显示。
  • 好吧,我们不能很好地回答这个问题,那么我们可以。真正的问题归结为您能否在一个查询中获取所有数据,而不是需要使用 28-31 个查询。与其查看查询后发生的所有代码,不如查看循环和有关表中数据的信息。
  • 您似乎可以轻松地减少代码,只需发送一个查询并在您的 php 代码本身中处理日期,但话又说回来,没有足够的信息可以确定您是否可以采用这种方法.另外,don't use mysql_* functions.

标签: php mysql sql


【解决方案1】:

对于什么太多没有明确的答案,因为有太多的参数,例如有多少用户,您的数据库在哪种硬件上,等等。

如果您的问题是“这对最终用户来说会不会太慢?”那么你应该分析代码,看看它是如何执行的。

要回答您关于是否每次分配 $rows 时是否存在查询的问题,答案是肯定的 - 您将在每次获得 $rows 时运行 SQL 查询。

主观上,我会说这是低效的。如果这是我的代码,我会重写它,以便 SQL 获取整个月份(例如,相应地设置日期范围),然后在 PHP 中处理返回的数据,循环数据并一次性处理月份。我可能会遍历返回的数据一次,构建一个以日期为键的数组,然后将它们一起内爆。

【讨论】:

    猜你喜欢
    • 2011-01-19
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    • 2014-05-05
    • 2020-11-13
    • 1970-01-01
    相关资源
    最近更新 更多