【发布时间】:2021-06-18 10:47:04
【问题描述】:
希望大家身体健康。我想显示外键出现在其子表中的次数。例如,我有一个带有主键“cin”的公司表,它链接到其他五个表,我想知道每个“cin”在其他表中出现了多少次。
我做了一个查询,它适用于少量数据,但是当我在 17GB 的数据库上运行它时,它需要永远(并且现在仍在运行),其中“ov”是数据库的名称,并且'opi'、'zii'、'li'、'kvi' 和 'kra' 是 cin 作为外键链接的另外五个表。
Select c.cin, name, br_section, address_line,
(Select count(cin) from ov.opi
where cin = c.cin) as opi_count,
(Select count(cin) from ov.zii
where cin = c.cin) as zii_count,
(Select count(cin) from li
where cin = c.cin) as li_count,
(Select count(cin) from ov.kvi
where cin = c.cin) as kvi_count,
(Select count(cin) from ov.krators
where cin = c.cin) as kra_count
from ov.company as c
group by c.cin
如何优化它以获得快速的结果?预期的输出有点像这样
cin opi_count zii_count li_count kvi_count kri_count
1 56 NULL 2 NULL 9
2 NULL 140 NULL 10 23
3 2 90 10 NULL 2
4 34 NULL 89 3 NULL
5 NULL 34 2 9 NULL
. . . . . .
. . . . . .
. . . . . .
谢谢你的时间,干杯!
【问题讨论】:
标签: sql postgresql optimization