>>>>>>>
>>>>>>>select * from myTable where nNumber IN (Fld1, Fld2, Fld3).
>>>>>>>
>>>>>>>
>>>>>>>They will behave the same as your original code, just a shorter code.
>>>>>>>
>>>>>>>There is no faster approach for this problem.
>>>>>>
>>>>>>Thank you.
>>>>>
>>>>>You're welcome.
>>>>
>>>>Is it optimizable?
>>>
>>>It is exactly the same as original Fld1 = @nNumber or Fld2 = @nNumber or ...
>>>
>>>So, it is optimizable if we have indexes on each of these columns.
>>
>>Not exacyly.
>>Can't test it in SQL Server right now but in VFP:
>>
>>CREATE CURSOR crsTest (Fld1 I, Fld2 I)
>>FOR lnFor = 1 TO 20
>> INSERT INTO crsTest VALUES(lnFor,20-lnfor)
>>NEXT
>>INDEX ON Fld1 TAG Fld1
>>INDEX ON Fld2 TAG Fld2
>>lnNumber = 12
>>
>>SYS(3054,12,[tst])
>>SELECT * FROM crsTest WHERE m.lnNumber IN(Fld1, Fld2)
>>MESSAGEBOX(tst)
>>
>>SELECT * FROM crsTest WHERE Fld1 = m.lnNumber OR Fld2 = m.lnNumber
>>
>>MESSAGEBOX(tst)
>>SYS(3054,0)
>>
>
>In SQL Server I am getting a table scan in both cases. Perhaps because I need to create a clustered index first.
Does the "table scan" means that SQL server does not utilize the index tags?
"The creative process is nothing but a series of crises." Isaac Bashevis Singer
"My experience is that as soon as people are old enough to know better, they don't know anything at all." Oscar Wilde
"If a nation values anything more than freedom, it will lose its freedom; and the irony of it is that if it is comfort or money that it values more, it will lose that too." W.Somerset Maugham