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