SQL效率⼀优化⼀子查询

2024-11-24 12:53:21
推荐回答(5个)
回答1:

1、用表连接替代子查询
select count(*) from tab1 t1, tab2 t2 where t1.col1=t2.col2
2、建立索引
create index I_tab1_col1 on tab1( col1 )
create index I_tab2_col1 on tab2( col1 )

回答2:

SQL本身没有问题,数据量也没有太夸张,全是内连接也不构成问题,真正影响执行性能的是IN和NOT IN,特别是最后的NOT IN,随着数据量增加,执行效率直线下降。优化方法就是少用IN和NOT IN。

回答3:

SELECT COUNT(1)
FROM tab1
WHERE NOT EXISTS (SELECT col1 from tab2 and col1 = tab1.col1)

col1上再建立索引吧

回答4:

你很明显,用NOT IN这种,速度慢的.

你一定要用到索引,才会速度快.

如你的语句,你可以这样写:
select count(*) from tab1 where exists (select 1 from table2 where table2.col1 = tab1.col1);

当然,前提是,tab2,上有COL1这个字段的索引.

请采纳!

回答5:

你这个表中是分区表嘛,如果不是的话效率会很低,如果是分区表的话建立上分区索引,这样效率会提高不少。具体的分区表如何建立搜索下。