As per the below article,range’ lock on the ‘next’ key that is outside the range....
http://blogs.msdn.com/b/sqlserverstorageengine/archive/2006/05/26/range-locks.aspx
Here want o know why only next key is locked not previous key taken/locked in case of non unique index.
create table foo (c1 float)
go
insert into foo values (1)
insert into foo values (2)
insert into foo values (3)
insert into foo values (4)
insert into foo values (5)
select * from foo where c1 between 2 and 4
Here key 1 also must be locked i addition to 5 to avoid phantom reads.
Manish