PHP或MySQL中的日期计算速度更快吗?

时间:2013-07-05 06:17:49

标签: php mysql performance

一段时间后,数据库管理员向我提到某些服务器端程序员不经常使用SQL。例如,当它进行基于时间的计算时,他声称SQL更适合。

我没有给予那么多考虑,因为它并没有真正影响我的工作。但是,现在我正在进行大量基于时间的计算。通常,我过去曾使用过PHP。为了表现,我很好奇SQL是否会更有效率。

例如,这些是我一直在做的一些任务:

        $todaysDate = date("d-m-Y");
        $todayStamp = strtotime($todaysDate); //Convert date to unix timestamp for comparison
        $verifyStamp = strtotime($verifyDate); //Convert submitted date to unix timestamp for comparison

        //The date comparison
        if((strtotime($lbp) <= $verifyStamp) && ($verifyStamp <= $todayStamp)){
            return true;
        }
        else {
            $invalid = "$verifyDate is outside the valid date range: $lbp - $todaysDate.";
            return $invalid;            
        }

变量并不重要 - 它只是为了说明我正在进行比较,为当前日期增加时间等等。

如果我要将部分或全部这些任务翻译成SQL,会不会有益?请注意,我与数据库的连接是通过PDO进行的,我通常必须创建一个新连接。此外,我的日期计算通常会插入到数据库中。因此,当我说我正在进行比较或为当前日期添加时间时,我的意思是我在将这些结果添加到查询之前进行这些计算:

即。 $result = something...INSERT INTO table VALUE = $result

计算可以很容易INSERT INTO table VALUE = DATE_ADD(...

赞赏任何意见。

3 个答案:

答案 0 :(得分:4)

与数据库交谈的开销将抵消它可能或可能没有的任何和所有优势。这很简单:无论如何你都是PHP,用PHP进行计算。如果要进行计算的数据位于数据库中,请在数据库中执行。不要在系统之间进行转换,因为除非您能够真正证明它可以为您节省大量时间(很可能不会)。你所展示的是两个系统中孩子的游戏,它几乎没有变得更快。

答案 1 :(得分:1)

当您考虑使用任何编程语言的SQL时,使用SQL比任何其他语言更适合计算。

如果你考虑Php和SQL,那么我想告诉你我从分析中得到的结论......

PHP架构是客户端 - 服务器架构,客户端向服务器发送HTTP请求,服务器通过HTTP响应

在服务器的背面,服务器生成一个简单的HTML格式页面,该页面是静态的,该页面是使用服务器上的PHP动态代码生成的。

现在总时间是:

HTTP-Request + SQL-Query + 从SQL查询中获取数据 + SQL数据的数据操作 + Php-to-HTMLGeneration + HTTP-Response

但是,如果您在SQL查询本身中使用计算,那么将保存php中数据操作SQL 的时间。因为Php必须明确处理数据。

所以总时间是:

HTTP-Request + SQL-Query + 从SQL查询中提取数据 + Php-to-HTMLGeneration + HTTP响应

如果您处理的数据量较少,这可能看起来几乎相等。但是对于一个实例,如果您在一个查询中处理 1000 行,那么在php中会出现 循环 运行1000次比运行单个查询更耗时,只需一个命令即可计算完整的1000行。

答案 2 :(得分:0)

要考虑的一件事是您正在执行的日期计算数量以及您的转化发生在查询中的位置。如果您正在搜索1000万条记录的数据库,并且您正在为每条记录将一个DateTime字段转换为WHERE子句内的Unix时间戳,并且在查询结果中最终只有100条记录,那么使用SQL将效率降低在1000万条记录上执行转换,而不是使用PHP将DateTime对象转换为仅在结果100条记录上的时间戳。

当然,如果你把转换放在select语句中,那么只有100条记录的结果才会被转换,所以它几乎是一样的。