Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何优化/合并此pdo查询和此计数查询?_Php_Mysql_Pdo_Count - Fatal编程技术网

Php 如何优化/合并此pdo查询和此计数查询?

Php 如何优化/合并此pdo查询和此计数查询?,php,mysql,pdo,count,Php,Mysql,Pdo,Count,这段代码运行得非常好,但我想知道是否有办法对其进行优化 我使用PDO和foreach循环发出请求,并显示存储在数据库中的所有文章 $allDatasAgenda = $bdd->query('SELECT id, cat_id, text, img FROM site_agenda WHERE activation = 1 ORDER BY date_publ

这段代码运行得非常好,但我想知道是否有办法对其进行优化

我使用PDO和foreach循环发出请求,并显示存储在数据库中的所有文章

$allDatasAgenda = $bdd->query('SELECT id, cat_id, text, img FROM site_agenda 
                                WHERE activation = 1 
                                ORDER BY date_publication')->fetchAll(PDO::FETCH_ASSOC);

<?php 
    $i=1; 
    foreach($allDatasAgenda AS $data_agenda): 

        // generate all html

    endforeach; 
    reset($allDatasAgenda); 
 ?>
我想知道是否有一种方法可以只通过一个查询得到这个结果

这只是一个优化和美观的问题


如果有人能为我的问题推荐一个更好的标题,那就不客气了。

让您知道,
$alldatashenda
是数组。

为了获得数组元素的数量,PHP有一个名为-shopping!的函数
count()

为了让您知道,
$alldatashenda
是数组。
为了获得数组元素的数量,PHP有一个名为-shopping!的函数<代码>计数()

用于优化:

  • 在数据库上添加索引您至少应该在
    激活
    列上有一个索引,但您需要在
    日期发布
    上有一个排序结果,因此
    (激活,日期发布)
    上的索引将非常有用
  • 避免在html页面上显示数据库的所有内容。当您在
    站点的议程中有1000多行时会发生什么?计算结果数组是一个很好的技巧,但如果程序通常执行计数查询和详细结果查询,那是因为它们在结果查询上使用限制偏移量对数据进行分页。对数据进行分页意味着避免向用户显示超过50行,同时通过从数据库中检索超过50行来避免丢失时间、内存和带宽(例如50行,但没有人希望在html页面中读取1000行)。所以最后,您肯定需要一个计数查询来知道您有多少行,并且您不应该在结果中获得所有这些行
有关优化:

  • 在数据库上添加索引您至少应该在
    激活
    列上有一个索引,但您需要在
    日期发布
    上有一个排序结果,因此
    (激活,日期发布)
    上的索引将非常有用
  • 避免在html页面上显示数据库的所有内容。当您在
    站点的议程中有1000多行时会发生什么?计算结果数组是一个很好的技巧,但如果程序通常执行计数查询和详细结果查询,那是因为它们在结果查询上使用限制偏移量对数据进行分页。对数据进行分页意味着避免向用户显示超过50行,同时通过从数据库中检索超过50行来避免丢失时间、内存和带宽(例如50行,但没有人希望在html页面中读取1000行)。所以最后,您肯定需要一个计数查询来知道您有多少行,并且您不应该在结果中获得所有这些行

使用缓存(Memcached或redis)然后优化查询更容易、更可行。仅仅因为你想要计数就使用redis就像使用加农炮杀死一只麻雀。使用缓存(Memcached或redis)然后优化查询更容易、更可行。仅仅因为你想要计数就使用redis就像使用加农炮杀死一只麻雀。
$countArticlesAgenda = $bdd->query('SELECT count(*) FROM site_agenda WHERE activation = 1');
$count_articles_agenda = $countArticlesAgenda->fetchColumn();