Php 优化计算特定id的mysql表中的行数
我正在使用这个代码Php 优化计算特定id的mysql表中的行数,php,mysql,optimization,query-optimization,Php,Mysql,Optimization,Query Optimization,我正在使用这个代码 $sql1 = mysql_query("SELECT section_id FROM forum_posts WHERE section_id='$sectionID' "); $num_rows = mysql_num_rows($sql1); 计算特定类别下的帖子数量,以便在论坛主页上显示特定部分中有多少帖子。 那么,有没有更好的选择来浏览所有这类帖子呢。我认为如果我使用它,将是一个巨大的性能消耗 编辑1:我只需要在论坛中显示每个部分下的帖子数量,所以我想在主页上查
$sql1 = mysql_query("SELECT section_id FROM forum_posts WHERE section_id='$sectionID' ");
$num_rows = mysql_num_rows($sql1);
计算特定类别下的帖子数量,以便在论坛主页上显示特定部分中有多少帖子。
那么,有没有更好的选择来浏览所有这类帖子呢。我认为如果我使用它,将是一个巨大的性能消耗
编辑1:我只需要在论坛中显示每个部分下的帖子数量,所以我想在主页上查看每个部分到目前为止有多少主题。
最佳的mysql查询是什么
编辑2:我是否应该替换PHP手册中所述的mysql查询功能?
选择不同的分区id,将(分区id)作为论坛分区中的分区id=“$sectionID”按分区id分组的分区帖子数量进行计数
然后执行$num_of_rows=$sql1['num_of_posts']
或者保持查询的原样,进行
计数($sql1)
只需在sql本身中使用count
$sql1 = mysql_query("SELECT count(post_id) as 'count_of_posts' FROM forum_posts WHERE section_id='$sectionID' ");
如果要同时获取所有截面计数,可以通过以下方式进行:
$sql1 = mysql_query("SELECT section_id, count(post_id) as 'count_of_posts' FROM forum_posts WHERE section_id='$sectionID' group by section_id");
使用count()聚合函数对行进行计数是更普通的SQL。如果需要同时计算多个部分,请使用分组方式。但你知道,对吗 先基准,再优化
考虑调查堆栈溢出如何管理其标记计数。请不要使用mysql函数,它已弃用(请参阅),并且易受sql注入攻击。在论坛帖子中使用或立即使用大约10k的帖子查询时间为0.02秒。是否可以更优化?如果要计算行数,请使用count()查询。任何进一步的优化都可能需要等待。不确定是否有理由使用不同的、按唯一分区分组的id就足够了。