Question

got the following query

SELECT * FROM myDB.dbo.myTable 
WHERE name = 'Stockholm'

or

SELECT * FROM myDB.dbo.myTable 
WHERE name LIKE('Stockholm')

I have created a fulltext index which will be taken when I use CONTAINS(name,'Stockholm') but in the two cases above it performs only a clustered index scan. This is way to slow, above 1 second. I'm a little confused because I only want to search for perfect matches which should be as fast as CONTAINS(), shouldn't it? I've read that LIKE should use a index seek at least, if you don't use wildcards respectively not using wildcards at the beginning of the word you're searching for. Thank you in advance

Was it helpful?

Solution

I bet you have no indexes on the name column. A Full-Text index is NOT a database index and is NOT used, unless you use a full-text predicate like CONTAINS.

OTHER TIPS

As stated by @Panagiotis Kanavos and @Damien_The_Unbeliever there was no "non-fulltext" index on my name column. I had to simply add a index with the following query:

CREATE INDEX my_index_name
ON myDB.dbo.myTable (name)

This improves the performance from slightly above one second to under a half second.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top