A表
A1
VARCHAR2(12)
N
A2
NUMBER(15)
N
A3
NUMBER(15)
N
A4
NUMBER(16)
Y
A5
NUMBER(16,2)
Y
A6
NUMBER(8)
Y
A7
NUMBER(16,2)
Y
索引:
A
I_A_1
Normal
A3
A
I_A_2
Normal
A1, A6
A
I_A_3
Normal
A1, A2, A3, A6
A
PK_A
Unique
A1, A2, A3
B表
B1
VARCHAR2(12)
N
B2
NUMBER(5)
N
B3
NUMBER(15)
N
B4
NUMBER(10,2)
Y
B5
NUMBER(10,2)
Y
B6
NUMBER(8)
N
索引:
B
PK_B
Unique
B1, B3, B6
在这两个表中
A1=B1,A2=B2,A3=B3
但是表B中的记录比A中少,要求查询出表A中A3存在,但是表B中B3不存在的表A中的所有记录
select A3,A7 FROM A WHERE NOT EXISTS (SELECT 1 FROM B WHERE A.A3=B.B3)
SELECT A3,A7 FROM A WHERE A3 NOT IN (SELECT B3 FROM B)
用上边这两个语句速度都很慢,表A中有500万条记录,表B中有10万条记录。
到底应该如何查询啊?
请各位高手不吝赐教,多谢! |