Sql执行慢

来源:百度知道 编辑:UC知道 时间:2024/07/08 09:56:58
问题:
我现在有2个表(Table1, Table2),表一有两个整型字段(A1,A2),表2有一个整型字段B1,要求查出全部满足条件的(A1,B1)对,并按B1进行排序。条件为A1和B1都大于0,且A1 <B1, 且A1+A2>B1。两个表各有8万条,我现在要用6分钟,太慢了,请帮助改进。
我的SQL语句:
select A1, B1
from Table1, Table2
where A1 > 0
and B1 > A1
and B1 < A1+ A2
order by B1;
我已经对A1,B1建了索引。
Oracle表,有主键。
My_Widow 写的语法不对。
8万条只是测试用的,实际估计每个表都有几千万行,所以必须优化。
这两个表本身没有关联关系,就是要求A1 <B1, 且A1+A2>B1

你这sql不对。
你都没关联条件,这样关联就是笛卡尔级,你可以看他的执行计划

select A1, B1
from Table1, Table2
where 关联条件
and A1 > 0
and B1 > A1
and B1 < A1+ A2
order by B1;

有主键没?

select A1, B1
from Table1(index=索引名), Table2(index=索引名)
where A1 > 0
and B1 > A1
and B1 < A1+ A2
order by B1;

80000*80000=64亿,笛卡尔积出来就有那么多了,你想想吧,6分钟差不多了