【发布时间】:2011-03-15 17:26:32
【问题描述】:
我只是想知道使用 PDO 类 rowCount 方法而不是 SQL COUNT(col_name) 来计算行数是否更好。
是否存在针对每种情况的推荐情况?
【问题讨论】:
-
COUNT(col_name) 返回为选择查询找到的特定条件的列数。受影响的行通常是指更新、删除、插入语句。 COUNT 是一个 SQL 函数,但 rowCount 是一个驱动程序功能,返回查询返回的行数。
我只是想知道使用 PDO 类 rowCount 方法而不是 SQL COUNT(col_name) 来计算行数是否更好。
是否存在针对每种情况的推荐情况?
【问题讨论】:
一个很大的区别? the rowCount manual page上的免责声明:
如果关联 PDOStatement 执行的最后一条 SQL 语句是 SELECT 语句,某些数据库可能会返回该语句返回的行数。但是,并非所有数据库都可以保证这种行为,因此不应依赖于便携式应用程序。
添加了重点。
如果您需要数据库中匹配的记录数,请使用COUNT()。如果您需要数据库驱动程序认为它返回给您的行数/支持该概念的数据库驱动程序中受影响的行数,则使用 PDO 的rowCount,但您不能保证数据会在那里,取决于底层数据库驱动程序。
【讨论】:
我会推荐 rowCount,因为它是在驱动程序中实现的。 COUNT() 需要 mysql 做额外的工作,这在您的实例中可能是也可能不是问题。
【讨论】: