返回列表 发布新帖
查看: 105|回复: 6

问个数据库的问题

[复制链接]

39

主题

66

回帖

97

积分

新手上路

积分
97
发表于 2022-3-7 11:06 | 查看全部 |阅读模式
问个问题,建了个配置表,表名是tmp_config,里面有2个字段,一个就是prodid,一个是is_group, prodid 里面就是 '-spidsdd','-yyyesdd','-umgfss'.....

这个tmp_config的prodid有150条记录


is_group 只有3个值 0,1,2

但是我发现建中间表如果这样写的话

create table tmp_01
as
select */parallel(8)/* distinct a.* from tb_name(

这个表很大

) a,(select prodid from tmp_config where is_group = 1) b where a.prodid = b.prodid;

运行起来,一直不出结果,但是如果我把它写死进去,哪怕写死进去100个,也是分分钟就出来了,就像select */parallel(8)/* distinct a.* from tb_name a where prodid in (select prodid from tmp_config where prodid in ('-spidsdd','-yyyesdd','-umgfss'.......)),但这样肯定不科学,有啥好办法吗?

0

主题

1

回帖

3

积分

新手上路

积分
3
发表于 2022-3-7 11:08 | 查看全部
你问我???

1

主题

254

回帖

72

积分

新手上路

积分
72
发表于 2022-3-7 11:10 | 查看全部
应该用join呀。。如果数据量大的话,在你的连接字段(prodid )上建索引。。
百十条记录的话,就不用索引了。用join就行

39

主题

66

回帖

97

积分

新手上路

积分
97
 楼主| 发表于 2022-3-7 11:12 | 查看全部


沉默牛 发表于 2022-3-7 11:10


应该用join呀。。如果数据量大的话,在你的连接字段(prodid )上建索引。。
百十条记录的话,就不用索引 ...

这个就是join啊,交叉连接就可以了

39

主题

66

回帖

97

积分

新手上路

积分
97
 楼主| 发表于 2022-3-7 11:10 | 查看全部


13901587387 发表于 2022-3-7 11:12


这个就是join啊,交叉连接就可以了

索引我也建了

0

主题

167

回帖

44

积分

新手上路

积分
44
发表于 2022-3-7 11:12 | 查看全部
把那段查询做成临时表再去写创建。数据量大的时候不推荐查询和创表一起做,而且还再嵌套查询,全部做成临时表来搞。

39

主题

66

回帖

97

积分

新手上路

积分
97
 楼主| 发表于 2022-3-7 11:12 | 查看全部


aabbbccc 发表于 2022-3-7 11:20


把那段查询做成临时表再去写创建。数据量大的时候不推荐查询和创表一起做,而且还再嵌套查询,全部做成临时 ...

那个不现实,那里面估计快有上亿的数据了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2001-2026 赚趣网 版权所有 All Rights Reserved.
提醒:本站内容来源于互联网,未经验证,请自行甄别,谨防受骗! 如有侵权,不良信息请第一时间联系我们删除!敬请谅解!
关灯 在本版发帖
扫一扫添加微信客服
返回顶部
快速回复 返回顶部 返回列表