PDO :: rowCount VS COUNT(*)

Ben

我有一个使用PDO的查询,如果行> 1比获取数据多,则首先对行进行计数

SELECT * WHERE id=:id
$row=$SQL->rowCount();

if($row>0){
    while($data=$SQL->fetch(PDO::FETCH_ASSOC)){...

    }
}
else{echo "no result";}

或者

SELECT COUNT(*), * WHERE id=:id
$data=fetch(POD::FETCH_NUM);
$row=data[0];


if($row>0){
//fetch data
}
else{echo "no result";}

哪个会有更好的表现?

2号 问题,如果我在id上设置了索引

哪一个更好COUNT(id)COUNT(*)

克里斯汀·马克

第一个问题:

COUNT()内部,使用count ,服务器(MySQL)将以不同方式处理请求。

执行此操作时COUNT(),服务器(MySQL)将仅分配内存以存储计数结果。

使用$row=$SQL->rowCount();服务器时(Apache / PHP)将处理整个结果集,为所有这些结果分配内存,并将服务器置于获取模式,这涉及许多不同的细节,例如锁定。

请注意,它PDOStatement::rowCount()返回受最后一条语句影响的行数,而不是返回的行数。如果关联程序执行的最后一条SQL语句PDOStatement是一条SELECT语句,则某些数据库可能会返回该语句返回的行数。但是,并非对于所有数据库都可以保证此行为,并且便携式应用程序不应该依赖此行为。

根据我的分析,如果使用COUNT(),则该过程将分为MySQL和PHP,而如果使用$row=$SQL->rowCount();,则该过程将更多地用于PHP。

因此COUNT()在MySQL中速度更快。

第二个问题:

COUNT(*)比更好COUNT(id)

解释:

count(*)mysql中函数经过优化,可以找到值的计数。使用通配符意味着它不会获取每一行。它只会找到计数。因此,请count(*)尽可能使用

资料来源:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PDO :: rowCount VS COUNT(*)

来自分类Dev

php pdo在mvc中显示rowCount

来自分类Dev

如果不存在vs @@ ROWCOUNT-性能

来自分类Dev

PDO mysql显示COUNT DISTINCT

来自分类Dev

PHP + PDO:使用大于10行的MySQL查询总是返回0行(rowCount()== 0)

来自分类Dev

如何使用pdo在一个查询中对两个值进行rowCount?

来自分类Dev

UPDATE查询后的PDO rowCount()是否可以显示“未进行任何更改”和“不存在的行”之间的区别?

来自分类Dev

PHP PDO Postgres与Sqlite列类型的count(*)

来自分类Dev

PHP PDO并使用SELECT COUNT(*)查询

来自分类Dev

PHP PDO MySQL count()预备语句

来自分类Dev

极限vs存在vs count(*)vs count(id)在MySQL中

来自分类Dev

UPDATE vs COUNT vs SELECT性能

来自分类Dev

PDO MYSQL嵌套的COUNT打破了我的查询

来自分类Dev

使用COUNT()时,PDO SQL问题显示多行

来自分类Dev

PDO MYSQL嵌套的COUNT打破了我的查询

来自分类Dev

如何在PDO查询中引用count(*)列

来自分类Dev

PDO MySQL连接关闭-未设置vs空

来自分类Dev

左加入VS内加入较小的行数mysql pdo php

来自分类Dev

PDO - 在我的情况下那个大的 bindValue vs bindParam

来自分类Dev

MySQL vs Firebird:使用 PDO 访问 PHP 中的查询列

来自分类Dev

PostgreSQL 9.3中的@@ ROWCOUNT

来自分类Dev

MySQL SELECT 1 vs SELECT`field_id` and COUNT 1 vs COUNT(*)或COUNT(`field_id`)性能明智

来自分类Dev

SQL Server PHP PDO COUNT 字段不正确或语法错误

来自分类Dev

SELECT @@ ROWCOUNT Oracle等效项

来自分类Dev

Python rowcount返回负数1

来自分类Dev

使用@@ RowCount进行多次更新

来自分类Dev

正确使用php PDOStatment :: rowCount()

来自分类Dev

@@ ROWCOUNT的正确类型是什么?

来自分类Dev

Swift array.capacity vs array.count

Related 相关文章

热门标签

归档