Avatar of dteshome
dteshome

asked on 

SQL Server - Help! Tricky Query

I have the following query.  I replaced the UDF call because the use of "...LIKE..." is much faster - but that is not the issue;

The problem is with the AND clause where there is '**'
The column m.Keyword holds comma separated keywords.  I need to return, say, the keyword 'pool'
but the query returns records with the following format"
pool (where the keyword is at the start of the string)  -- okay
, pool  -- okay
View, pool, fixer  -- okay
, Room for pool  -- not okay

How do I ensure that I get what I expect?

Thank you.


select TOP 601 a.property_type,a.mlsnum,a.status,dbo.fn_sort_status(a.status), m.keyword -- 559 in 0 secs
from mls_unified_svo_tbl a (nolock)
LEFT OUTER JOIN mls_unified_mvo_svo_tbl m (nolock) on a.mlsnum = m.mlsnum
LEFT OUTER JOIN photos_exist b (nolock) on a.mlsnum = b.mlsnum
LEFT OUTER JOIN virtual_tours c (nolock) on a.mlsnum = c.mlsnum
where (((a.lp BETWEEN 0 AND 999000)) AND ((a.status IN (5))))
AND (a.br >= 3) AND (a.ba >= 2) AND (a.sf >= 1200)
AND (a.property_type = 0)
**AND (m.keyword like  '%Bank Owned%' OR m.keyword like '%Builder/Developer%' OR m.keyword like '%Fixer%' OR m.keyword like '%pool%' OR m.keyword like '%Beverly Hills Adjacent%' OR m.keyword like '%Turnkey%')
--AND (dbo.fn_mvo_searchall_rtrn_bln_DT('Bank Owned,Builder/Developer,Fixer,pool,Beverly Hills Adjacent,Turnkey',m.keyword)  = 1)
--
KEYWORD
----------------------------
Turnkey
Move-in,Pool,Turnkey,Unfurnished,Yard
Pool
Move-in,Pool,Turnkey,Yard
Room for Pool,Room for Tennis Court,Tennis Court,Yard
Granite,Move-in,Pool,Remodeled,Turnkey,Yard
Court Approval,Foreclosure,Room for Pool,Unfurnished,Vacant,Yard
Microsoft SQL Server 2008Windows Server 2008

Avatar of undefined
Last Comment
dteshome
ASKER CERTIFIED SOLUTION
Avatar of Kevin Cross
Kevin Cross
Flag of United States of America image

Blurred text
THIS SOLUTION IS ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
Avatar of dteshome
dteshome

ASKER

Thank you, MWVISA1. This works!

One more question.
How would you characterize the performance gain in a report? (code used to run in 24 secs with UDF, with ...LIKE ... it runs in 760 ms)
Would you say that the query runs 2300% faster, (from 24 sec to 1 sec)
or that there is a performance gain of 96%? (oldTime - NewTime)/OldTime * 100%)
Avatar of Kevin Cross
Kevin Cross
Flag of United States of America image

Probably the latter.  Most times in optimizing queries, you start with initial value of 24 seconds in your case and associate that to cost of each component of the query.  Moving down to 1 second, thus, eliminated 96% of the cost.  If you are promoting how much you improved the query, it might be nice to say I improved the process 2300%.  That sounds spectacular and works even if the original was 0.024 milliseconds and you optimized to 0.001.  The magnitude of the change as a percentage is still the same and sounds really good. *smile*
Avatar of dteshome
dteshome

ASKER

Thank you so much, MWVISA1.

I will use the former :)  for effect!

D.
Windows Server 2008
Windows Server 2008

Windows Server 2008 and Windows Server 2008 R2, based on the Microsoft Vista codebase, is the last 32-bit server operating system released by Microsoft. It has a number of versions, including including Foundation, Standard, Enterprise, Datacenter, Web, HPC Server, Itanium and Storage; new features included server core installation and Hyper-V.

86K
Questions
--
Followers
--
Top Experts
Get a personalized solution from industry experts
Ask the experts
Read over 600 more reviews

TRUSTED BY

IBM logoIntel logoMicrosoft logoUbisoft logoSAP logo
Qualcomm logoCitrix Systems logoWorkday logoErnst & Young logo
High performer badgeUsers love us badge
LinkedIn logoFacebook logoX logoInstagram logoTikTok logoYouTube logo