Hi Mamatha,

Derby can't use indexes for this query because there are no indexes on the expressions resulting from calling the UPPER function. There may be two solutions to this issue:

1) Wait for the 10.6 release. That release will introduce case-insensitive string comparisons. See https://issues.apache.org/jira/browse/DERBY-1748

2) Add generated columns to your tables today and rewrite your query.

Solution (2) would look something like this:

alter table tidlrrep
add column upper_source_type generated always as upper( source_type );
alter table tidlrrep
add column upper_base_language_term generated always as upper( base_language_term );

alter table tidlggls
add column upper_base_language_term generated always as upper( base_language_term );

create index ulrrep on tidlrrep( upper_source_type, upper_base_language_term );
create index ulggls on tidlggls( upper_base_language_term );

SELECT count (*) FROM TIDLRREP LRREP, TIDLGGLS LGGLS WHERE lrrep.upper_source_type = 'COPYBOOK ‘ AND lrrep.upper_base_language_term= lggls.upper_base_language_term;

Hope this helps,
-Rick

Mamatha Kodigehalli Venkatesh wrote:

Hello,

Derby just cannot process the below query through ij editor and it just hangs, whereas in oracle it just takes 2 sec’s.

Derby and Oracle are reflecting the same data.

There are around 46 thousand records that oracle fetches using this query.

SELECT count (*) FROM TIDLRREP LRREP, TIDLGGLS LGGLS WHERE UPPER (LRREP.SOURCE_TYPE) = 'COPYBOOK ‘ AND UPPER(LRREP.BASE_LANGUAGE_TERM) = UPPER(LGGLS.BASE_LANGUAGE_TERM);

Any feedback on this, Cost Based Optimizer forcing an index for column LRREP.BASE_LANGUAGE_TERM is also not of any help.

Please advise how to make the joins work smoother.

Thanks

Mamatha


Reply via email to