找回密码
 立即注册
搜索
热搜: 有货 线报 好价
查看: 89|回复: 6

问个数据库的问题

[复制链接]

31

主题

60

回帖

72

积分

新手上路

积分
72
发表于 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

主题

228

回帖

49

积分

新手上路

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

31

主题

60

回帖

72

积分

新手上路

积分
72
 楼主| 发表于 2022-3-7 11:12 | 显示全部楼层


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


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

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

31

主题

60

回帖

72

积分

新手上路

积分
72
 楼主| 发表于 2022-3-7 11:10 | 显示全部楼层


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


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

索引我也建了

0

主题

167

回帖

44

积分

新手上路

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

31

主题

60

回帖

72

积分

新手上路

积分
72
 楼主| 发表于 2022-3-7 11:12 | 显示全部楼层


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


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

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

本版积分规则

手机版|小黑屋|赚趣网
提醒:本站内容来源于互联网,未经验证,请自行甄别,谨防受骗! 如有侵权,不良信息请第一时间联系我们删除!敬请谅解!

GMT+8, 2026-7-22 23:02 , Processed in 0.072761 second(s), 5 queries , MemCache On.

Powered by Discuz! X3

快速回复 返回顶部 返回列表