0

我正在尝试一次选择 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 个查询来提高性能,但是,我需要隔离从返回的每个表中提取多少行。

4

1 回答 1

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;

等等。

于 2013-03-25T18:26:23.610 回答