| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.misc -> Need SQL optimization help
I have been writing SQL scripts for five years, however lately, the database I have been working with is so large that queries I need to run are taking in excess of hours. I have been reading the Oracle literature on DB and SQL optimization, and so far, I find it a bit bewildering.
I will continue to read the literature, but in the meantime, can someone suggest how I might optimize the following query?
Table ItemList has 16,939,870 rows.
Table SubItems has 97,626,282 rows.
Table SubSubItems has > 100,000,000 rows.
Thank you for your help in advance.
select
item_list.item_id,
SubItems.sub_item_id,
SubSubItems.sub_sub_item_id
from
(
select distinct
item_epass01.item_id
from
(
select distinct
item_ipass01.item_id,
item_ipass01_k.keyword
from
ItemList item_ipass01
join ItemKeyword item_ipass01_nsk on
item_ipass01.item_id = item_ipass01_nsk.na_sequence_id
join Keyword item_ipass01_k on
(
item_ipass01_nsk.keyword_id = item_ipass01_k.keyword_id and
(
item_ipass01_k.keyword = 'FLAG01' or
item_ipass01_k.keyword = 'FLAG02' or
item_ipass01_k.keyword = 'FLAG03' or
item_ipass01_k.keyword = 'FLAG04'
)
)
)
item_epass01
left join
(
select distinct
item_ipass02.item_id,
item_ipass02_k.keyword ep02_keyword
from
ItemList item_ipass02
join ItemKeyword item_ipass02_nsk on
item_ipass02.item_id = item_ipass02_nsk.na_sequence_id
join Keyword item_ipass02_k on
(
item_ipass02_nsk.keyword_id = item_ipass02_k.keyword_id and
item_ipass02_k.keyword = 'FLAG05'
)
)
item_epass02 on
item_epass01.item_id = cDNA_epass02.na_sequence_id
where
ep02_keyword is NULL
item_list.item_id = SubItems.item_id and
SubItems.group_id = 146
SubItems.sub_item_id = SubSubItems.sub_item_id and
SubSubItems.score > 40.0
![]() |
![]() |