I'm creating result paging based on first letter of certain nvarchar
column and not the usual one, that usually pages on number of results.
And I'm not faced with a challenge whether to filter results using LIKE
operator or equality (=
) operator.
select *
from table
where name like @firstletter + '%'
vs.
select *
from table
where left(name, 1) = @firstletter
I've tried searching the net for speed comparison between the two, but it's hard to find any results, since most search results are related to LEFT JOINs
and not LEFT
function.
"Left" vs "Like" -- one should always use "Like" when possible where indexes are implemented because "Like" is not a function and therefore can utilize any indexes you may have on the data.
"Left", on the other hand, is function, and therefore cannot make use of indexes. This web page describes the usage differences with some examples. What this means is SQL server has to evaluate the function for every record that's returned.
"Substring" and other similar functions are also culprits.