Your syntax does not make it clear if you are joining FILE_B on a field from FILE_A in the subselect.
Select * From FILE_A
WHERE EXISTS (SELECT 1 FROM FILE_B WHERE FILE_B.FIELD_A= FILE_B.FIELD_B AND FILE_B .FIELD_AA= FILE_A.FIELD_A)
Usually the optimizer can change this type of sub-select into a "Fetch First 1 Rows Only" clause, which makes it very efficiently.
Coding the In clause is usually quite a bit slower.
Chris Hiebert
Senior Programmer/Analyst
Disclaimer: Any views or opinions presented are solely those of the author and do not necessarily represent those of the company.
-----Original Message-----
From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of D Freinkel (a4g)
Sent: Thursday, December 22, 2016 7:23 AM
To: rpg400-l@xxxxxxxxxxxx
Subject: Seeking a faster response to Where EXISTS or WHERE IN
I am doing extracts from files based on records in file A
Select * from FILE_A where field_A in (Select FIELD_AA from FILE_B).
Or
Select * from FILE_A where field_A exists i (Select FIELD_AA from FILE_B where FIELD_A = FIELD_B).
File_A and FILE_B both have about a million records.
Problem:
When running the program it takes a few minutes to build the sub-select.
Using CHAINS is instant, but I would prefer to use SQL.
Can anyone help with performance improvements?
TIA
Darryl Freinkel
--
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L) mailing list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit:
http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives at
http://archive.midrange.com/rpg400-l.
Please contact support@xxxxxxxxxxxx for any subscription related questions.
Help support midrange.com by shopping at amazon.com with our affiliate link:
http://amzn.to/2dEadiD
As an Amazon Associate we earn from qualifying purchases.