Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
SQL Select
Message
General information
Forum:
Visual FoxPro
Category:
Other
Title:
Environment versions
Visual FoxPro:
VFP 9 SP1
Miscellaneous
Thread ID:
01547863
Message ID:
01547896
Views:
37
>>>>>>
>>>>>>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.
If it's not broken, fix it until it is.


My Blog
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform