单表百亿数据查询优化

您好,语句改成这样,布隆索引是有的。添加bitmap索引说已经存在索引了,是不是要把布隆索引删了,桶的话已经添加了,现在提升到2s多久可以返回结果了,但是还是达不到秒内返回。还有哪里可以优化的吗
SELECT
A.ROW_ID,
A.SALE_ORD_ID,
A.PROD_ID OBJECT_ID,
A.ACTION_CD,
A.INTEGRATION_ID,
A.ASSET_INTEG_ID,
A.ROOT_ORDER_ITEM_ID PROD_ITEM_ID,
A.CREATED,
A.LAST_UPD,
A.CREATE_BY,
A.LAST_UPD_BY,
A.PART_NUM,
A.TYPE,
A.NAME,
A.ADJ_UNIT_PRI,
A.UNIT_PRI,
A.AGREE_ID,
A.X_VPN_GROUP_ID,
A.X_VPN_INNER_ID,
A.X_INTEGRATION_NUM,
A.X_USERNAME,
A.SERV_ACCNT_ID,
A.DESC_TEXT,
A.X_CIRCUIT_NUMBER,
A.X_PROM_INTEG_ID,
A.X_PROM_ID,
A.X_RELAY_MAIN_NUMBER,
A.SERVICE_END_DT
FROM SIEBEL_HISTORY.S_ORDER_ITEM_DETAIL_1122_par A
WHERE A.PAR_ORDER_ITEM_ID = ‘1-4DUFDJM’ AND A.PROD_ROW_ID IS NOT NULL

辛苦发下新的profile看下吧

profile.txt (24.0 KB)

select count(*) cnt,ROW_ID from S_ORDER_ITEM_DETAIL group by ROW_ID limit 100;
可移执行下这个发下结果看下么?

set enable_shared_scan = true 设置这个参数之后重新跑下看下呢。

这个设置了,但是效率没有变化。

profile.txt (45.3 KB)

您好这个可以告知下结果么?目前看下来scan花费了大约1s多的时间,需要确认下是不是bucket列造成了数据分布不均匀导致的。

这个结果全是2。

select * from (
select ROW_ID ,count(*) cnt from S_ORDER_ITEM_DETAIL group by ROW_ID
) t order by ROW_ID desc limit 100; 这样看下呢?

这个结果又全是1.

select * from (
select ROW_ID ,count(*) cnt from S_ORDER_ITEM_DETAIL group by ROW_ID
) t order by cnt desc limit 100;
搞错了,是这个。

1-2XQRLW6 54
1-35IRV6H 54
1-6RW8MX9 54
1-21CFOO8 36
1-9FFQ6ON 36
1-AF9EDXY 36
1-BDB7FT9 36
1-BDCIW2M 36
1-B4GRXIE 36
1-B270DR5 36
1-21CFOOB 36
1-B9AS56R 36
1-6ZLXLY9 36
1-AIXGVMD 36
1-21C091I 36
1-BCCNYK9 36
1-AD4FH7Y 36
1-5QN53TG 36
1-2TB38VB 36
1-21CFOOY 36
1-BBG4O8I 36
1-9YBL1KA 36
1-BERAYP8 32
1-BEXTSCR 32
1-IBPWVMH 32
1-IJWDA8H 32
1-BEXJMB1 32
1-BESAKLK 32
1-BD6UZ4L 32
1-IBEH5H2 32
1-IBPWVYV 32
1-BESAKLM 32
1-IBPWVO0 32
1-IJUB4JI 32
1-IJUB4JG 32
1-BEH0UJD 32
1-BEH0UK5 32
1-BE6IBVB 32
1-IBPKW0U 32
1-5XBBTOB 32
1-BD31T4R 32
1-IBFJHF5 32
1-IBPWVO3 32
1-BESAKLL 32
1-IJN8LPW 32
1-IBGBXA6 32
1-BCSK95D 32
1-IJUB4JC 32
1-G1PXASW 32
1-BESAKLI 32
1-AP2J5HP 32
1-IJ013K4 32
1-IBPTHI4 32
1-IBPWVMY 32
1-4C7RGBU 32
1-IBEH4ZP 32
1-IBPWVYR 32
1-ID88FF8 32
1-BEPDDCW 32
1-IIZQ4VP 32
1-IJQ0J50 32
1-IJR5XW6 32
1-IG8YC2X 32
1-A01KAGM 32
1-IJUB4JD 32
1-IBDQI9N 32
1-BEH0ULV 32
1-IJYIVC2 32
1-BF0KECA 32
1-4C7RG9P 32
1-B3J73F5 32
1-BF0FRA1 32
1-BERJ15H 32
1-BF4U17R 32
1-BF0U9DT 32
1-BDWWFEH 32
1-BE6IBP9 32
1-IJ013NL 32
1-IJ013LZ 32
1-4C7PHXU 32
1-BE6IC9K 32
1-B9WN0EZ 32
1-BE6IBVA 32
1-IBPWVXA 32
1-BERJ13Q 32
1-IG8YC1S 32
1-IBPKWOP 32
1-B536UE4 32
1-IBGBXPV 32
1-IJZZ1JZ 32
1-BESAKLJ 32
1-9UEEDG1 32
1-IJUB4JH 32
1-IJIN3UX 32
1-BAND9RJ 32
1-BF4FNN2 32
1-IJYQKYO 32
1-UKTS4C 27
1-AR522O9 27
1-AA8ER6I 27

咱们最新建表中,bucket数量是多少呢?

99个分区,每个分区20个桶

是还有调整空间的。不过成本比较大。

观察到咱们分区中有一些分区达到了80G这个级别。有一些才 1G左右。

我理解可以建表时针对不同分区单独设置下 bucket数量。这样不会有小文件问题,也能提升查询效率。

文档参考下

这个好像改不了bucket数量呢

我可以把分区去掉吗?因为最后的查询里面是不包含分区的,分区其实没多大作用,历史表一查就是全表查

完全没有分区过滤场景的话确实是可以的。