标签: count

MySQL IS NULL / IS NOT NULL 行为不端?

请看这张表:

mysql> desc s_p;

+-------------------------+------------------+------+-----+---------+----------------+    
| Field                   | Type             | Null | Key | Default | Extra          |
+-------------------------+------------------+------+-----+---------+----------------+
| id                      | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| s_pid                   | int(10) unsigned | YES  | MUL | NULL    |                |
| sm_id                   | int(10) unsigned | YES  | MUL | NULL    |                |
| m_id                    | int(10) unsigned | YES  |     | NULL    |                |
| created                 | datetime         | YES  |     | NULL …
Run Code Online (Sandbox Code Playgroud)

mysql count

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

为什么当我索引列时这个 sqlite 查询要慢得多?

我有一个带有两个表的 sqlite 数据库,每个表有 50,000 行,包含(假)人的名字。我构建了一个简单的查询来找出有多少个名字(名字、中间名首字母、姓氏)是两个表共有的:

select count(*) from fakenames_uk inner join fakenames_usa on fakenames_uk.givenname=fakenames_usa.givenname and fakenames_uk.surname=fakenames_usa.surname and fakenames_uk.middleinitial=fakenames_usa.middleinitial;
Run Code Online (Sandbox Code Playgroud)

当除了主键上没有索引(与此查询无关)时,它运行得很快:

[james@marlon Downloads] $ time sqlite3 generic_data_no_indexes.sqlite "select count(*) from fakenames_uk inner join fakenames_usa on fakenames_uk.givenname=fakenames_usa.givenname and fakenames_uk.surname=fakenames_usa.surname and fakenames_uk.middleinitial=fakenames_usa.middleinitial;"
131

real    0m0.115s
user    0m0.111s
sys     0m0.004s
Run Code Online (Sandbox Code Playgroud)

但是如果我为每个表的三列添加索引(总共六个索引):

CREATE INDEX `idx_uk_givenname` ON `fakenames_uk` (`givenname` )
//etc.
Run Code Online (Sandbox Code Playgroud)

然后它运行得很慢:

[james@marlon Downloads] $ time sqlite3 generic_data.sqlite "select count(*) from fakenames_uk inner join fakenames_usa on fakenames_uk.givenname=fakenames_usa.givenname and fakenames_uk.surname=fakenames_usa.surname and fakenames_uk.middleinitial=fakenames_usa.middleinitial;"
131

real    1m43.102s
user    0m52.397s
sys …
Run Code Online (Sandbox Code Playgroud)

sqlite performance index optimization count

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

PostgreSQL:COUNT(*) 使用顺序扫描,而不是索引

为什么PostgreSQL会顺序扫描表进行COUNT(*)查询,而有一个非常小的索引主键?

postgresql index count

15
推荐指数
1
解决办法
9627
查看次数

如何在一个查询中进行多个计数?

我用查询来计算记录

SELECT COUNT(col1) FROM table1 WHERE col1 LIKE '%something%'
SELECT COUNT(col1) FROM table1 WHERE col1 LIKE '%another%'
SELECT COUNT(col1) FROM table1 WHERE col1 LIKE '%word%'
Run Code Online (Sandbox Code Playgroud)

对于每一个计数,mysql都需要遍历整个表,如果表很长,查询很多,这是一个大问题。

我想知道是否有一种方法可以在一个查询中进行所有计数。在这种情况下,当mysql遍历每一行时,它会处理所有计数,而无需一遍又一遍地扫描整个表。

mysql performance query count query-performance

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

sys.partition.rows 列有多准确?

系统视图sys.partitions有一列“行”,它是给定分区中的总行数。对于未分区的表(或只有一个分区,取决于您如何看待它),此列给出了表中的行数。

我很好奇这个列有多准确,我是否可以用它代替SELECT COUNT(1) FROM TableName. 我做了一些实验,创建一个表并添加几千行,删除几百行,再添加几千行等等,而且计数一直都在。但是,我有一张包含大约 7 亿行和几个索引的表。sys.partitions聚集索引的行再次失效,但是其他索引显示出一些细微的变化 (+-20k)。

有谁知道这一行是如何计算的,以及它是否像看起来一样准确?

sql-server sql-server-2008-r2 partitioning count sql-server-2012

14
推荐指数
1
解决办法
4400
查看次数

如何使用 LIMIT 计算行数?

我想捕捉 X 行,因此,我设置了LIMIT X; 但是我怎样才能同时计算总行数呢?

目前,我使用两个单独的查询来这样做

SELECT COUNT(*) FROM col WHERE CLAUSE
SELECT * FROM col WHERE CLAUSE LIMIT X
Run Code Online (Sandbox Code Playgroud)

有没有办法在一个查询中做到这一点?

编辑:输出应该是col单元格和行数。实际上,选择col单元格后,它应该只走表格以进行计数。

我知道不可能合并这两个查询,因为第一个返回 1 行,但第二个返回 X 行。我很好奇 mysql 中是否有一个函数可以在LIMIT.

mysql count select mysql-5.5

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

Postgres:计数(*)与计数(id)

我在文档中看到了count(*)和之间的区别count(pk)。我一直在使用count(pk)(哪里pkSERIAL PRIMARY KEY)不知道count(*).

我的问题是关于 Postgres 的内部优化。是否足够聪明地发现 aSERIAL PRIMARY KEY将存在于每一行中并且永远不会为假并且只计算行数,或者它是否会对每一行进行冗余谓词检查?我同意这可能是一个毫无意义的优化,但我只是好奇。

我看了看输出EXPLAINEXPLAIN VERBOSEcount(*)count(id)count(id > 50)看看是否EXPLAIN提到检查其输出的断言。它没有。

postgresql optimization count

12
推荐指数
1
解决办法
9486
查看次数

计算列中的空值和非空值

如何在 MySQL 的同一列上计数和检索 null 和 not null?

我的表

---------------------------------------------------
id   |    name    |      visited   |   registDate |
---------------------------------------------------
1    |    george  |       NULL     |   2014-04-01 |
---------------------------------------------------
2    |    Thomas  |       NULL     |   2014-04-15 |
---------------------------------------------------
3    |    Wilfred |        1       |   2014-04-24 |
---------------------------------------------------
4    |    paul    |        1       |   2014-04-10 |
---------------------------------------------------
5    |    elina   |       NULL     |   2014-05-03 |
---------------------------------------------------
6    |    angela  |       NULL     |   2014-04-13 |
---------------------------------------------------
7    |    elina   |        1       |   2014-05-18 | …
Run Code Online (Sandbox Code Playgroud)

mysql null count

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

仅选择对特定列具有不同/多个值的记录

下面是我的会员表的一个例子。在电子邮件字段中有一些记录具有多个值。我只想选择那些具有多个电子邮件值的记录:

会员表

ID   LASTNAME    FIRSTNAME    EMAIL
567  Jones       Carol        carolj@gmail.com
567  Jones       Carol        caroljones@aol.com
678  Black       Ted          tedblack@gmail.com
908  Roberts     Cole         coleroberts@gmail.com
908  Roberts     Cole         coler@aol.com
908  Roberts     Cole         colerobersc@hotmail.com
Run Code Online (Sandbox Code Playgroud)

我希望结果是:

567  Jones       Carol        carolj@gmail.com
567  Jones       Carol        caroljones@aol.com
908  Roberts     Cole         coleroberts@gmail.com
908  Roberts     Cole         coler@aol.com
908  Roberts     Cole         colerobersc@hotmail.com
Run Code Online (Sandbox Code Playgroud)

请注意,缺少 Ted Black,因为他只有一个电子邮件地址条目。

我应该澄清一下,我的会员表有 4 列以上。电话和地址等还有额外的列。一个成员可能有多个条目,因为他/她有多个电话号码或地址。我只想捕获那些拥有多个电子邮件地址的人。

这是数据库清理的一部分,将添加主键。我应该进一步澄清,有些人可能有多个具有相同电子邮件地址的条目。在此阶段,我不想捕获具有相同电子邮件地址的多个条目,而只想捕获具有不同电子邮件地址的多个条目的那些条目。

count select distinct

12
推荐指数
1
解决办法
8万
查看次数

SQL 在分区上计数不同

我有一个包含两列的表,我想计算 Col_B 上(由)Col_A 上的不同值。

我的表

Col_A | Col_B 
A     | 1
A     | 1
A     | 2
A     | 2
A     | 2
A     | 3
b     | 4
b     | 4
b     | 5
Run Code Online (Sandbox Code Playgroud)

预期结果

Col_A   | Col_B | Result
A       | 1     | 3
A       | 1     | 3
A       | 2     | 3
A       | 2     | 3
A       | 2     | 3
A       | 3     | 3
b       | 4     | 2
b       | 4     | …
Run Code Online (Sandbox Code Playgroud)

sql-server count window-functions

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