只是想知道你们中的任何一个人是否Count(1)过度使用过Count(*),如果性能有显着差异,或者这只是从过去几天带来的遗留习惯?
(具体数据库是SQL Server 2005.)
我有以下查询:
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 null和null列中的值计数.
我正在使用Hibernate来检索特定查询的行数.假设我有一个名为'Person'的表,其中包含各种列.其中一列是'name'.
如果我想获得名为"安德鲁"的人数,哪种方式最有效?假设它们中的一些/全部存在性能差异.有没有更好的方法来使用Hibernate/SQL?
(1)选择所有列
Query query = session.createQuery("from Person where name= :name");
query.setParameter("name", name);
List result = query.list();
int count = result.size();
Run Code Online (Sandbox Code Playgroud)
(2)只选择名称列
Query query = session.createQuery("select name from Person where name= :name");
query.setParameter("name", name);
List result = query.list();
int count = result.size();
Run Code Online (Sandbox Code Playgroud)
(3)在查询中使用Count
Query query = session.createQuery("select count(*) from Person where name= :name");
query.setParameter("name", name);
long count = (Long) query.uniqueResult();
Run Code Online (Sandbox Code Playgroud)
(4)在查询中使用Count和name列
Query query = session.createQuery("select count(name) from Person where name= :name");
query.setParameter("name", name);
long count = (Long) query.uniqueResult();
Run Code Online (Sandbox Code Playgroud)
编辑:对不起,我的列表中有两个3号
COUNT(*)和COUNT(table.ColumnName)之间有什么区别?
我一直认为将列名作为参数更快COUNT,但现在当我想到它时我真的不知道因为这*意味着函数计算行数,所以可能没有任何区别?或者可能给出一个特定的列名称甚至会减慢进程?
是否有一个MySQL函数可以计算字符串在另一个字符串或列中出现的次数?基本上我想要:
SELECT
SUB_COUNT('my word', `my_column`) AS `match_count`
FROM `table`
Run Code Online (Sandbox Code Playgroud)
谢谢!
编辑:
我需要知道字符串出现在一列的每一行中的次数SELECT.
在sql server中,count(列)也会计算空列吗?我在考试中遇到了这个问题而且我感到很困惑,但最后我给出的答案是,计数(列)也会计算空列.我只是想知道我是对还是错.有人对此有任何想法吗?
sql ×7
sql-server ×3
database ×1
function ×1
hibernate ×1
java ×1
mysql ×1
performance ×1
search ×1
text ×1