Another thought on this, Vinay - the statement I just suggested does seem to be very close to how you described what you need - that is one thing about SQL, it can be very much like one's natural language. Here is your original request -

I want to select all records in TABA where there is at least one
record in TABB with matching FLD1 and FLD2 = 'P' and FLD3 > 20190101

Just thought this is interesting and maybe even a little bit instructive!


On 1/17/2020 10:49 AM, Vernon Hamberg wrote:
I agree with using Visual Explain - it would show any difference in what the optimizer does.

Of course, when the environment changes, the optimizer might make different choices. One factor would be the number of records.

Most important, to my way of thinking, is to have indexes (logical files work) with keys that start with FLD1 over both files.

That makes me think of an alternate statement, see if it works in DEV, and do check with Visual Explain - VE is something you can use in the "Run SQL statements" tool in ACS or in the same thing called from Navigator if you are still using the older Access for IBM i.

select *
from taba
where fld1 in (select fld1 from tabb
               where fld2 = 'P' and fld3 > 20190101

I'm curious as to what difference Visual Explain would show you on this one. It should get you the same result set, although I've not tested it. The IN predicate should take real advantage of an index over TABB.


On 1/17/2020 9:11 AM, Charles Wilt wrote:
I considered Birgitta's solution...

But I think mine would be more efficient.

Visual Explain would tell you for sure.

It's possible the query engine would optimize both into the same internal


On Fri, Jan 17, 2020 at 8:05 AM Vinay Gavankar <vinaygav@xxxxxxxxx> wrote:

Thanks Charles and Birgitta. Both worked fine in DEV. Given that TABB has
over 10 billion record in Prod, which one would be more efficient?

On Fri, Jan 17, 2020 at 12:13 AM Birgitta Hauser <Hauser@xxxxxxxxxxxxxxx>

May be:

Select Distinct a.*
     From Tablea a Join Tableb b
          on a.Fld1 = b.Fld1
               and b.Fld2 = 'P'
               and b.Fld3 > 20190101

Mit freundlichen Grüßen / Best regards

Birgitta Hauser

"Shoot for the moon, even if you miss, you'll land among the stars." (Les
"If you think education is expensive, try ignorance." (Derek Bok)
"What is worse than training your staff and losing them? Not training
and keeping them!"
„Train people well enough so they can leave, treat them well enough so
don't want to.“ (Richard Branson)

-----Original Message-----
From: MIDRANGE-L <midrange-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of
Sent: Freitag, 17. Januar 2020 03:30
To: Midrange Systems Technical Discussion <midrange-l@xxxxxxxxxxxxxxxxxx

Subject: Re: Help with SQL

I think Charles meant b.fld1 = a.fld1 - otherwise, this looks fine.

On 1/16/2020 7:58 PM, Charles Wilt wrote:
select *
from taba A
where exists (select 1 from tabb B
                where b.fld1 - a.fld1
                      and b.fld2 = 'P' and fld3 > 20190101


On Thu, Jan 16, 2020 at 4:20 PM Vinay Gavankar <vinaygav@xxxxxxxxx>

I need some help with SQL.

I have 2 Tables TABA & TABB which have a common field, say FLD1

TABA is unique on FLD1. TABB has millions of records for one value of
TABB is a partitioned file with billions of records.

TABB also has FLD2 for Status and FLD3 for date (field type is
I want to select all records in TABA where there is at least one
record in TABB with matching FLD1 and FLD2 = 'P' and FLD3 > 20190101

Can anyone please suggest sql. It is a one-time exercise.
Also, if anyone is familiar with 'SEQUEL' by HelpSystems, we are
required to use that on prod boxes, and there are subtle differences
the syntax.
TIA for the help
Vinay Gavankar

As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2022 by and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.