相关疑难解决方法(0)

Count(*)vs Count(1) - SQL Server

只是想知道你们中的任何一个人是否Count(1)过度使用过Count(*),如果性能有显着差异,或者这只是从过去几天带来的遗留习惯?

(具体数据库是SQL Server 2005.)

sql sql-server performance

699
推荐指数
11
解决办法
36万
查看次数

COUNT(*)与COUNT(1)对COUNT(pk):哪个更好?

我经常发现这三种变体:

SELECT COUNT(*) FROM Foo;
SELECT COUNT(1) FROM Foo;
SELECT COUNT(PrimaryKey) FROM Foo;
Run Code Online (Sandbox Code Playgroud)

据我所知,他们都做同样的事情,我发现自己在我的代码库中使用了三个.但是,我不喜欢以不同的方式做同样的事情.我应该坚持哪一个?他们中的任何一个比其他两个更好吗?

sql select count

214
推荐指数
5
解决办法
10万
查看次数

在SQL中,count(列)和count(*)之间有什么区别?

我有以下查询:

select column_name, count(column_name)
from table
group by column_name
having count(column_name) > 1;
Run Code Online (Sandbox Code Playgroud)

会有什么区别,如果我更换了所有调用count(column_name)count(*)

这个问题的灵感来自于如何在Oracle中的表中找到重复值?.


为了澄清已接受的答案(也许是我的问题),替换count(column_name)count(*)将在结果中返回一个额外的行,其中包含a nullnull列中的值计数.

sql

199
推荐指数
5
解决办法
4万
查看次数

在SQL中,count(*)和count(<fieldname>)之间存在差异

非常自我解释的问题.有没有理由使用其中一个?

sql

13
推荐指数
2
解决办法
8227
查看次数

"SELECT COUNT(列)"比"SELECT COUNT(*)"更快/更慢吗?

我在MSSQL2008中运行这样的查询:

select count(*)
from t1
inner join t2 on t1.id = t2.t1_id
inner join t3 on t1.id = t3.t1_id 
Run Code Online (Sandbox Code Playgroud)

假设t1.id有一个NOT NULL约束.因为它们是内连接并且t1.id永远不能为null,所以使用count(t1.id)而不是count(*)应该产生完全相同的最终结果.我的问题是:性能是否相同?

我也想知道联接是否会影响这个.我意识到添加或删除连接会影响性能和结果集的长度.假设在不更改连接模式的情况下,您设置count为仅定位一个表.会有什么不同吗?换句话说,这两个查询之间是否存在差异:

select count(*)    from t1 inner join t2 on t1.id = t2.t1_id 
select count(t1.*) from t1 inner join t2 on t1.id = t2.t1_id 
Run Code Online (Sandbox Code Playgroud)

MySQL中的COUNT(id)与COUNT(*)为MySQL回答了这个问题,但是我找不到具体的MS-SQL答案,而且我找不到任何考虑join因素的东西.

注意:我试图在Google和SO上找到这些信息,但很难弄清楚如何说出我的搜索.

performance join count sql-server-2008

13
推荐指数
2
解决办法
2万
查看次数

获取pdo的行数

我有一个简单的pdo准备查询:

$result = $db->prepare("select id, course from coursescompleted where person=:p"); 
$result ->bindParam(':p', $q, PDO::PARAM_INT);
$result->execute();
$rows = $result->fetch(PDO::FETCH_NUM);
echo $rows[0];
Run Code Online (Sandbox Code Playgroud)

echo似乎返回记录的ID值,而不是查询返回的记录数?

对此有何想法或解释?

mysql pdo rows

11
推荐指数
2
解决办法
5万
查看次数

COUNT(fld) 比 COUNT(*) 快吗?

可能的重复:
MySQL 中的 COUNT(id) 与 COUNT(*)

简短而简单:在 MySQL 中,会比我理解的MySQL 中的“all”选择器SELECT COUNT(fld) AS count FROM tbl更快。SELECT COUNT(*) AS count FROM tbl*

是否COUNT(*)选择所有行来计算计数,从而使查询SELECT(id)更便宜?或者这并不重要?

mysql sql

5
推荐指数
1
解决办法
749
查看次数

Mysql SELECT COUNT(*)OR SELECT 1?PDO

人们早就知道PDO不支持COUNT(*),如下所示的查询会失败,因为它不会返回任何受影响的行,

$q = $dbc -> prepare("SELECT COUNT(*) FROM table WHERE id = ?");
$q -> execute(array($id));
echo $q -> rowCount();
Run Code Online (Sandbox Code Playgroud)

做一些研究我发现你也可以使用其他计数方法来获取行计数而根本不使用计数,例如下面的查询应该与上面相同,但是对于PDO会返回正确的,

$q = $dbc -> prepare("SELECT 1 FROM table WHERE id = ?");
$q -> execute(array($id));
echo $q -> rowCount();
Run Code Online (Sandbox Code Playgroud)

互联网上有各种各样的消息来源声称;

"SELECT COUNT(*)
"SELECT COUNT(col)
"SELECT 1
Run Code Online (Sandbox Code Playgroud)

两者都是相同的(有一些差异)所以如何使用mysql哪个PDO无法正确返回真正的计数,

"SELECT 1 
Run Code Online (Sandbox Code Playgroud)

工作?

计数讨论的方法

为什么选择1比选择计数(*)更快?

php mysql pdo count

2
推荐指数
2
解决办法
4787
查看次数

标签 统计

sql ×5

count ×3

mysql ×3

pdo ×2

performance ×2

join ×1

php ×1

rows ×1

select ×1

sql-server ×1

sql-server-2008 ×1