9

我只看到这篇文章

我需要知道在这种情况下什么是最好的表现

查询中的 if 语句

SELECT *,if( status = 1 , "active" ,"unactive") as status_val FROM comments

VS

<?php
    $x = mysql_query("SELECT * FROM comments");

     while( $res = mysql_fetch_assoc( $x ) ){
       if( $x['status'] == 1 ){
             $status_val = 'active';
        }else{
             $status_val = 'unactive';
        }
     }
  ?>

从绳子上剪下 10

SELECT * , SUBSTR(comment, 0, 10) as min_comment FROM comments

VS

<?php
    $x = mysql_query("SELECT * FROM comments");

     while( $res = mysql_fetch_assoc( $x ) ){
       $min_comment = substr( $x['comment'],0,10 ) ;
     }
  ?>

ETC ????? 当我使用 MYSQL 函数或 PHP 函数时

4

5 回答 5

4

这取决于。 从网络的角度来看,在第一个 VS 中,PHP 胜出,在第二个 VS 中,MYSQL 胜出。那是因为您通过套接字发送的数据较少。因此脚本变得更快。

于 2012-11-01T11:57:01.160 回答
2

这是对您问题的一个很好的描述: Doing computing in MySQL vs PHP

在第二个示例的情况下,速度问题可能很重要。首先你不知道你的评论有多大,所以万一

$x = mysql_query("SELECT * FROM comments");

 while( $res = mysql_fetch_assoc( $x ) ){
   $min_comment = substr( $x['comment'],0,10 ) ;
 }

您要求服务器将所有内容都返回给您(这里我指的是评论的全部长度),这可能很重要。乘以表中的行数可能是相当大的数据,您必须在 php 和 sql 之间传输。在第二种情况下,SELECT * , SUBSTR(comment, 0, 10) as min_comment FROM comments 这将在服务器上完成,不需要额外的内存。

在第一个示例的情况下,我认为在 sql 端执行它也更好,因为之后您仍然需要执行额外的循环。除此之外,阅读您的代码的人可能会感到困惑,为什么您需要该代码。

于 2012-11-01T12:08:28.897 回答
1

在这种情况下,使用 MySQL 函数可以避免在 PHP 中循环并节省大量代码。

在其他情况下,他们别无选择:例如,当您在WHERE零件中使用它们时。

在性能方面,在大多数情况下差异是微不足道的:使用最简单的解决方案。

于 2012-11-01T11:57:58.033 回答
0

唯一的答案:测量它!您有两个可行的解决方案,并希望获得最佳执行时间。

于 2012-11-01T11:57:39.990 回答
0

我想说这完全取决于两端的系统和当前负载。通常,数据库服务器比台式机更坚固,在数据库端完成整个事情而不是拆分它并部分使用 PHP 会更快。

于 2012-11-01T11:57:59.563 回答