Php 哪个更快?

Php 哪个更快?,php,mysql,optimization,query-optimization,performance,Php,Mysql,Optimization,Query Optimization,Performance,今天我和一位朋友聊起了增加页面加载时间的问题,他向我提到mysql_num_行很旧,需要很多时间 用下面的代码替换mysql_num_行会更快吗 $query = mysql_query("SELECT COUNT(*) FROM sent_messages WHERE from_sender = '".$_SESSION['id']."'") or die(mysql_error()); $result = mysql_fetch_array($query); $

今天我和一位朋友聊起了增加页面加载时间的问题,他向我提到mysql_num_行很旧,需要很多时间

用下面的代码替换mysql_num_行会更快吗

$query      =   mysql_query("SELECT COUNT(*) FROM sent_messages WHERE  from_sender = '".$_SESSION['id']."'") or die(mysql_error()); 
$result     =   mysql_fetch_array($query);
$count      =   $result['COUNT(*)'];
我对时间复杂度和算法不太了解,所以任何建议都将不胜感激


谢谢

mysql_num_rows并不老,但它的速度较慢,因为它需要在客户端和数据库之间传输更多的数据。如果您需要读取数据并对其进行计数,则mysql_num_rows是不可替代的。如果您只需要记录计数,我建议您采用这种方式:

$query  = mysql_query("SELECT COUNT(*) FROM sent_messages WHERE  from_sender = '".$_SESSION['id']."'") or die(mysql_error());
$count  = mysql_result($query,0);

mysql_num_rows并不老,但速度较慢,因为它需要在客户端和数据库之间传输更多数据。如果您需要读取数据并对其进行计数,则mysql_num_rows是不可替代的。如果您只需要记录计数,我建议您采用这种方式:

$query  = mysql_query("SELECT COUNT(*) FROM sent_messages WHERE  from_sender = '".$_SESSION['id']."'") or die(mysql_error());
$count  = mysql_result($query,0);
覆盖了这里的地面。但是,为了避免混淆,我只想添加以下内容:

通常,请尝试在DB/查询中做尽可能多的工作。也就是说,不要只为了用PHP或任何其他语言执行计算和转换而获取大量数据。始终寻求只从数据库请求您需要的内容,从而最大限度地减少数据交换

在这种情况下,使用COUNT*和mysql_result方法会更好;在数据库层中执行计算,仅请求所需的数据和记录数

然而,如果您也要列出记录,即显示计数并迭代记录集,那么您只需执行正常的选择。。。从…起获取记录以生成列表,并在此结果集中执行mysql_num_行以获取计数。在这种情况下,在单独的选择计数*中不会有增益。。。查询,因为您仍然需要数据库中的整个结果集。

涵盖了这里的内容。但是,为了避免混淆,我只想添加以下内容:

通常,请尝试在DB/查询中做尽可能多的工作。也就是说,不要只为了用PHP或任何其他语言执行计算和转换而获取大量数据。始终寻求只从数据库请求您需要的内容,从而最大限度地减少数据交换

在这种情况下,使用COUNT*和mysql_result方法会更好;在数据库层中执行计算,仅请求所需的数据和记录数


然而,如果您也要列出记录,即显示计数并迭代记录集,那么您只需执行正常的选择。。。从…起获取记录以生成列表,并在此结果集中执行mysql_num_行以获取计数。在这种情况下,在单独的选择计数*中不会有增益。。。查询,因为您仍然需要数据库中的整个结果集。

太好了。不过我很好奇。建议的方法比mysql\u num\u rows快多少?@Lance你告诉我。这实际上取决于表大小、查询复杂性和索引的相关性/存在性。你应该试着给它计时。。。有真实的数据,很好。不过我很好奇。建议的方法比mysql\u num\u rows快多少?@Lance你告诉我。这实际上取决于表大小、查询复杂性和索引的相关性/存在性。你应该试着给它计时。。。用真实的数据。