问个数据库的问题
问个问题,建了个配置表,表名是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'.......)),但这样肯定不科学,有啥好办法吗? 你问我???
应该用join呀。。如果数据量大的话,在你的连接字段(prodid )上建索引。。
百十条记录的话,就不用索引了。用join就行
沉默牛 发表于 2022-3-7 11:10
应该用join呀。。如果数据量大的话,在你的连接字段(prodid )上建索引。。
百十条记录的话,就不用索引 ...
这个就是join啊,交叉连接就可以了
13901587387 发表于 2022-3-7 11:12
这个就是join啊,交叉连接就可以了
索引我也建了 把那段查询做成临时表再去写创建。数据量大的时候不推荐查询和创表一起做,而且还再嵌套查询,全部做成临时表来搞。
aabbbccc 发表于 2022-3-7 11:20
把那段查询做成临时表再去写创建。数据量大的时候不推荐查询和创表一起做,而且还再嵌套查询,全部做成临时 ...
那个不现实,那里面估计快有上亿的数据了
页:
[1]