给定几个表,对包含 where 子句的表中的行数进行轮询的最佳方法是什么?我想立即执行此操作,以便可以将其插入到具有每日行数记录的表中。
tableA - 符合条件 1 的所有行的计数,特定列值 X select count(*) from tableA where col1 = X
tableA - 符合条件 2 的所有行的计数,特定列值 Y select count(*) from tableA where col2 = Y
这两个很容易组合成:
select
(select count(*) from tableA where col1 = X) as 'X count',
(select count(*) from tableA where col2 = Y) as 'Y count'
但现在我想添加:tableB - 在最后指定的时间间隔内创建的所有行的计数
select count(*) from tableB where dateCreated >= date_sub(curdate(), interval 1 day) where col3 = Z;
这给了我:
select
(select count(*) from tableA where col1 = X) as 'X count',
(select count(*) from tableA where col2 = Y) as 'Y count',
(select count(*) from tableB where dateCreated >= date_sub(curdate(), interval 1 day)) as 'Z count';
它似乎运行得很慢,在这种情况下是否有更有效的计算行数的方法?