每个表返回MySQL多个SELECT语句计数结果

时间:2013-03-25 16:51:58

标签: mysql join

我正在尝试一次为查询选择3个表。我想知道确定每个表返回多少行的最佳方法是什么?

单独这样做,我有

SELECT * from tableA  
SELECT * from tableB  
SELECT * from tableC  

如果我这样做,我可以看到每个选择返回多少行。我想立即选择所有这些我已成功完成的,但我想知道如何获取每个表返回的结果。以下示例查询:

SELECT * from tableA ta WHERE id=100  
SELECT * from tableB tb where pid=100  
SELECT * from tableC tc where cid = 100

这只是一个问题?

SELECT (count(id) from tableA where id=100) as count_tableA,  
SELECT * from tableA ta WHERE id=100,    
SELECT (count(pid) from tableB where id=100) as count_tableB,   
SELECT * from tableB tb where pid=100,  
SELECT (count(id) from tableB where cid=100) as count_tableC,  
SELECT * from tableC tc where cid = 100  

总体目标是通过每次避免3个查询来提高性能,但是,我需要隔离从每个返回的表中提取的行数。

1 个答案:

答案 0 :(得分:0)

好吧,你无法真正避免这些疑问。您必须查询每个表以获取行,这需要进行全表扫描。

您可以通过在tableA(id)tableB(id)tableC(cid)上创建索引来优化计数。

您还可以获取应用程序层中的行,然后再进行计数。

查询的语法不正确。也许你的意思是:

select (SELECT count(id) from tableA where id=100) as count_tableA,  a.*
from TableA
where id = 100;

等等。