Database Management
 
Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
User Name:
Password:
Remember me
Go Back   Dev Shed ForumsDatabasesDatabase Management

Reply
Add This Thread To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 
Thread Tools Search this Thread Rate Thread Display Modes
 
Unread Dev Shed Forums Sponsor:
Stay one step ahead of the competition. Evaluate and give feedback on some of the hottest web development tools on the market today. Make your opinion heard! Click Here
  #1  
Old April 10th, 2008, 05:08 AM
myscruffy myscruffy is offline
Contributing User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Jan 2004
Posts: 147 myscruffy User rank is Sergeant Major (2000 - 5000 Reputation Level)myscruffy User rank is Sergeant Major (2000 - 5000 Reputation Level)myscruffy User rank is Sergeant Major (2000 - 5000 Reputation Level)myscruffy User rank is Sergeant Major (2000 - 5000 Reputation Level)myscruffy User rank is Sergeant Major (2000 - 5000 Reputation Level)myscruffy User rank is Sergeant Major (2000 - 5000 Reputation Level) 
Time spent in forums: 1 Day 19 h 34 m 49 sec
Reputation Power: 33
Can a WHERE CAST() clause use an index??

I've got a table with GUIDs, names, DOB's etc. and want to build a generic search SQL method from a client application.

If I have an index on the primary key and do this search
SELECT * FROM TABLE WHERE CAST(uniqueID AS VARCHAR(25)) = '4454';

Will is be able to use the index?

I presume not.

Reply With Quote
  #2  
Old April 10th, 2008, 07:12 AM
r937's Avatar
r937 r937 is offline
SQL Consultant
Dev Shed God 25th Plane (17000 - 17499 posts)
 
Join Date: Feb 2003
Location: Toronto Canada
Posts: 17,310 r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level) 
Time spent in forums: 1 Month 3 Weeks 5 Days 4 h 19 m 26 sec
Reputation Power: 888
try LEFT(uniqueID , 4) = '4454'
__________________
r937.com | rudy.ca

Reply With Quote
  #3  
Old April 10th, 2008, 07:39 AM
myscruffy myscruffy is offline
Contributing User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Jan 2004
Posts: 147 myscruffy User rank is Sergeant Major (2000 - 5000 Reputation Level)myscruffy User rank is Sergeant Major (2000 - 5000 Reputation Level)myscruffy User rank is Sergeant Major (2000 - 5000 Reputation Level)myscruffy User rank is Sergeant Major (2000 - 5000 Reputation Level)myscruffy User rank is Sergeant Major (2000 - 5000 Reputation Level)myscruffy User rank is Sergeant Major (2000 - 5000 Reputation Level) 
Time spent in forums: 1 Day 19 h 34 m 49 sec
Reputation Power: 33
Quote:
Originally Posted by r937
try LEFT(uniqueID , 4) = '4454'

But would that still be able to use the primary key index which is created using an INTEGER data type?

Perhaps I should be more explicit. I want to have a simple Google-like search interface with a single text box to input the search string. I'll parse the query string on white space and use WHERE LIKE commands to filter the rows. Specifically I want to search across INTEGER, VARCHAR and DATE data types.

Query string: "SMITH 03/1980"

SQL: SELECT uniqueID FROM TABLE WHERE surname LIKE '%smith%' OR surname LIKE '%03/1980%' OR dob LIKE '%smith%' OR dob LIKE '%03/1980%'

Result: To return all the entries with surname SMITH and born in March 1980

Reply With Quote
  #4  
Old April 10th, 2008, 07:43 AM
r937's Avatar
r937 r937 is offline
SQL Consultant
Dev Shed God 25th Plane (17000 - 17499 posts)
 
Join Date: Feb 2003
Location: Toronto Canada
Posts: 17,310 r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level)r937 User rank is Lieutenant General (80000 - 90000 Reputation Level) 
Time spent in forums: 1 Month 3 Weeks 5 Days 4 h 19 m 26 sec
Reputation Power: 888
there are so many things weird here, i just don't know where to start

the index on your integer primary key (let me guess, IDENTITY?) will be useless

indexes on your other columns will also be useless because of the wildcards

my sincere advice: redesign your front end interface

Reply With Quote
Reply

Viewing: Dev Shed ForumsDatabasesDatabase Management > Can a WHERE CAST() clause use an index??


Thread Tools  Search this Thread 
Search this Thread:

Advanced Search
Display Modes  Rate This Thread 
Rate This Thread:


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
View Your Warnings | New Posts | Latest News | Latest Threads | Shoutbox
Forum Jump


Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
  
 





© 2003-2008 by Developer Shed. All rights reserved. DS Cluster 2 hosted by Hostway