× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



I think the issues come from doing record selection in JOIN criteria - that can be a mess - not exactly sure what goes on, but it's bit me badly at times.

I wouldn't go so far as Tom, to eliminate the JOIN syntax entirely, however.

I do find the OR in JOIN criteria as done here to be just a little weird.

There IS a real possible performance killer - the LIKE predicate - if your host value has a leading wildcard, you are doing a table scan - period. Horrible!! Danger, danger, Will Robinson!!

But see what this does - it separates things by their function, either for JOINing or for WHEREing - I made that up!

Select aa,bb,cc,dd from parts join secmast on secmast.loc = parts.loc and secmast.type = parts.type
where secuser = ? and (secmast.loc = ? or 1 = 1) and (secmast.type = ? or 1 = 1) and parts.desc like ?

That's a really quick attempt - I would probably not use the 1 = 1 thing = that is there to get "all locations" and "all types" - maybe a better way would be to build 4 different statements, depending on whether a location or type is specified - that would not be so ugly as I just presented, and might actually work!

So the WHERE clause would be one of these -

where secuser = ? and parts.desc like?
where secuser = ? and secmast.loc = ? and parts.desc like ?
where secuser = ? and secmast.type = ? and parts.desc like ?
where secuser = ? and secmast.loc = ? and secmast.type = ? and parts.desc like ?

Eh?
Vern

On 2/20/2012 4:25 PM, Tom E Stieger wrote:
I'm not sure if you can run the following test, but does visual explain
have different results for the following?

Select aa,bb,cc,dd from parts, secmast
where secuser= ?
and (secmast.loc = parts.loc or secmast.loc = ?)
and (secmast.type = parts.type or secmast.type = ?)
and parts.desc like ?



-Tom Stieger
IT Manager
California Fine Wire





-----Original Message-----
From: midrange-l-bounces@xxxxxxxxxxxx
[mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf Of
franz400@xxxxxxxxxxxx
Sent: Monday, February 20, 2012 1:46 PM
To: midrange-l@xxxxxxxxxxxx
Subject: sql joins with or logic - performance

SQL requests from .net app where joins have "or" logic

Select aa,bb,cc,dd from parts inner join secmast on secuser= ?
and (secmast.loc = parts.loc or secmast.loc = ?) and (secmast.type =
parts.type or secmast.type = ?) where parts.desc like ?

Visual Explain is showing over 1,000,000 ms in Final Select
v6r1

Is "or" logic in a join an issue? Their app allowing user to select a
single loc or "all" locs, same for type.
Jim Franz



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

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

This mailing list archive is Copyright 1997-2024 by midrange.com 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.