Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Very slow SQL Update even when index exists
Message
 
To
05/12/2006 11:35:52
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Environment versions
Visual FoxPro:
VFP 9 SP1
OS:
Windows XP SP2
Network:
Windows 2000 Server
Database:
Visual FoxPro
Miscellaneous
Thread ID:
01174680
Message ID:
01174987
Views:
7
>>I am having a problem with the SQL Update below. From the amount of time it takes to run with only 1 or 2 records in the cursor c_chng I believe it is ignoring the index on k_ivinvt and scanning all 186K recs in the inventory table IVINVT. The last time I had this problem was on updating invoice lines and I fixed it by adding a 2nd line to the where clause to include the invoice key. This time there is no other index I can use. The two tables are tied only by the ivinvt.k_ivinvt = c_chng.k_ivinvt. This has got to be a really common event so I know I am missing something here.
>>
>>I added set enginebehavior 90 but it made no difference
>>
>>
set enginebehavior 90
>>
>>* Update inventory allocated amounts
>>TEXT TO mSqlCommand noshow pretext 15
>>  update ivinvt
>>  set allocated = allocated + c_chng.chng
>>  from c_chng
>>  where ivinvt.k_ivinvt = c_chng.k_ivinvt
>>ENDTEXT
>>&mSqlCommand
>
>John,
>Doing it old style help? ie:
>
>select c_chng
>scan
>update ivinvt ;
>  set allocated = allocated + c_chng.chng
>  where ivinvt.k_ivinvt == c_chng.k_ivinvt
>endscan
>
Cetin

Cetin,
yes that is the way I did it for now. The old Scan Loop never fails. I have been changing all my old code with the scan loops to SQL and I was hoping to use a simple SQL here because I have many places I can use it. When I get some time I will play with it some more.
Thanks.
Beer is proof that God loves man, and wants him to be happy. - Benjamin Franklin
John J. Henn
Previous
Reply
Map
View

Click here to load this message in the networking platform