繁体   English   中英

Select COUNT 带子查询或单独查询

[英]Select COUNT with sub-query or separate query

我正在使用 DataTables 来显示数据。 它需要总行数,那么哪种方法更适合这种情况?

1-子查询:

SELECT u.id, u.name, (SELECT COUNT(id) FROM users WHERE active = 1) AS total_count FROM employees e JOIN users u ON u.id = e.user_id WHERE u.active = 1

这将返回:

___________________________
| id | name | total_count |
|____|______|_____________|         
| 1  | John |      7      |
| 2  | Mark |      7      |
| .. | ..   |      7      |
|____|______|_____________|

2-单独查询:

SELECT u.id, u.name FROM employees e JOIN users u ON u.id = e.user_id WHERE u.active = 1

SELECT COUNT(id) FROM users WHERE active = 1

第一个查询将返回:

____________
| id | name | 
|____|______|   
| 1  | John |
| 2  | Mark |
| .. | ..   |
|____|______|

第二个将返回:

_____________
| COUNT(id) |
|___________|   
|     7     |  
|___________|

如果数据集很小,那么第一个查询不会造成伤害。唯一的缺点是,由于内联视图是 select 语句的一部分,它将为employeesusers之间的连接返回的每条记录执行。 从性能的角度来看,这是一个更好的选择,内联视图代表一个表,total_count 现在可以成为 select 语句的一部分:

SELECT u.id, u.name,total_count.tot_count  
FROM (SELECT COUNT(id) tot_count FROM users WHERE active = 1) AS total_count,
                            employees e JOIN users u 
ON u.id = e.user_id WHERE u.active = 1;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM