下面一个查询需要六十秒 ssinvoice 有30万条记录,ssfeedetail 有400万条记录,想问这样的数据量需要这么多时间正常不。如果要优化,可提达到的理想状态时多少,有什么优化思路。
select *
from ssinvoice iv, ssfeedetail f
where f.ssfd_invoice_no = iv.ssiv_invoice_no
and f.ssfd_biz_type_code = '3'
AND f.ssfd_imp_exp_flag = 'E'
AND f.ssfd_org_id = '86'
AND f.ssfd_supplier_code = 'ESHA00001259'
AND (f.ssfd_payment_flag != 'Y' OR f.ssfd_payment_flag IS NULL)
AND (f.ssfd_wo_status = '2' OR f.ssfd_wo_status IS NULL)
and iv.ssiv_entrust_no is null
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1311 Card=117 Bytes=
70902)
1 0 NESTED LOOPS (Cost=1311 Card=117 Bytes=70902)
2 1 TABLE ACCESS (BY GLOBAL INDEX ROWID) OF 'SSFEEDETAIL' (C
ost=883 Card=214 Bytes=66126)
3 2 INDEX (RANGE SCAN) OF 'IDX_SSFD_ORG_SUPPLIER' (NON-UNI
QUE) (Cost=29 Card=5986)
4 1 TABLE ACCESS (BY GLOBAL INDEX ROWID) OF 'SSINVOICE' (Cos
t=2 Card=1 Bytes=297)
5 4 INDEX (UNIQUE SCAN) OF 'PK_SSINVOICE' (UNIQUE) (Cost=1
Card=1)
Statistics
----------------------------------------------------------
71 recursive calls
0 db block gets
8131 consistent gets
5533 physical reads
0 redo size
85181 bytes sent via SQL*Net to client
404 bytes received via SQL*Net from client
20 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
285 rows processed
select *
from ssinvoice iv, ssfeedetail f
where f.ssfd_invoice_no = iv.ssiv_invoice_no
and f.ssfd_biz_type_code = '3'
AND f.ssfd_imp_exp_flag = 'E'
AND f.ssfd_org_id = '86'
AND f.ssfd_supplier_code = 'ESHA00001259'
AND (f.ssfd_payment_flag != 'Y' OR f.ssfd_payment_flag IS NULL)
AND (f.ssfd_wo_status = '2' OR f.ssfd_wo_status IS NULL)
and iv.ssiv_entrust_no is null
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1311 Card=117 Bytes=
70902)
1 0 NESTED LOOPS (Cost=1311 Card=117 Bytes=70902)
2 1 TABLE ACCESS (BY GLOBAL INDEX ROWID) OF 'SSFEEDETAIL' (C
ost=883 Card=214 Bytes=66126)
3 2 INDEX (RANGE SCAN) OF 'IDX_SSFD_ORG_SUPPLIER' (NON-UNI
QUE) (Cost=29 Card=5986)
4 1 TABLE ACCESS (BY GLOBAL INDEX ROWID) OF 'SSINVOICE' (Cos
t=2 Card=1 Bytes=297)
5 4 INDEX (UNIQUE SCAN) OF 'PK_SSINVOICE' (UNIQUE) (Cost=1
Card=1)
Statistics
----------------------------------------------------------
71 recursive calls
0 db block gets
8131 consistent gets
5533 physical reads
0 redo size
85181 bytes sent via SQL*Net to client
404 bytes received via SQL*Net from client
20 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
285 rows processed