[英]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 语句的一部分,它将为employees
和users
之间的连接返回的每条记录执行。 从性能的角度来看,这是一个更好的选择,内联视图代表一个表,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.