Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
SQL Select
Message
Information générale
Forum:
Visual FoxPro
Catégorie:
Autre
Titre:
Versions des environnements
Visual FoxPro:
VFP 9 SP1
Divers
Thread ID:
01547863
Message ID:
01547896
Vues:
38
>>>>>>
>>>>>>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
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform