【发布时间】:2020-01-07 08:59:18
【问题描述】:
我有以下表格
Create Table A
(rpt_id number,
Acct_id number,
type vatchar2(10));
Create Table 2
(rpt_id number,
Acct_id number,
tp varchar2(10),
information varchar2(100));
Insert into A1 (RPT_ID,ACCT_ID,TYPE) values (1,11,'type1');
Insert into A1 (RPT_ID,ACCT_ID,TYPE) values (2,22,'type2');
Insert into A2 (RPT_ID,ACCT_ID,TP,INFORMATION) values (1,11,'billnum','2341');
Insert into A2 (RPT_ID,ACCT_ID,TP,INFORMATION) values (1,11,'billname','abcd');
我需要获取以下信息
RPT_ID ACCT_ID billnum billname
1 11 2341 abcd
虽然这张表会有很大的数据,但A1中大约有200000条记录,A2中记录了相关的记录,每个RPT_ID至少有4到5行
直接从这两个连接创建枢轴会产生性能问题吗? 到目前为止,我使用了以下方法
Insert into t3
as select a2.*
from a1
join a2 on a1.rpt_id = a2.rpt_id and a1.ACCT_ID = a2.ACCT_ID
where a1.type = 'type1';
然后在 t3 上旋转以制作下面的结构并插入到 t4 中以进一步使用它
RPT_ID ACCT_ID billnum billname
------ ------- ------- --------
1 11 2341 abcd
这是对 A2 表的全扫描,我们有什么办法可以避免全扫描。如果数据量很大,pivot 会出现性能问题。
【问题讨论】:
-
@jarlh 感谢您格式化问题。请帮我如何格式化,以便我下次可以用格式化的方式写。
-
在您选择的编辑工具中正确设置文本格式。选择/复制。/将您的代码粘贴到您的 Q 中。现在使用在 S.O. 中选择的代码。编辑屏幕,单击编辑屏幕顶部编辑菜单中的
{}工具。祝你好运。
标签: sql oracle oracle11g pivot