Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Poor performance when you append data to a shared file-b
Message
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Miscellaneous
Thread ID:
01308588
Message ID:
01311034
Views:
28
Your first LEFT JOIN isn't necessary because it's killed by WHERE conditions anyway. You've to move those conditions into JOIN if you really looking for OUTER JOIN. Try
SELECT invitems.invnum,invitems.sequence,invitems.item_id,;
		items.source,items.sourcenum as conum,cohead.commcalcby ;
	FROM mydatabase!invitems ;
	LEFT OUTER JOIN mydatabase!items ;
		ON invitems.item_id=items.item_id ;
			AND items.source="C" AND items.cb_id=0
	LEFT OUTER JOIN mydatabase!cohead ;
		ON items.sourcenum==cohead.conum ;
	WHERE invitems.invnum=lnInvnum  ;
	GROUP BY items.sourcenum ;
	INTO CURSOR c_invoice_calculatecommission
>Sure thing, here's one of them:
>
>
>SELECT invitems.invnum,invitems.sequence,invitems.item_id,;
> items.source,items.sourcenum as conum,cohead.commcalcby ;
> FROM mydatabase!invitems ;
>  LEFT OUTER JOIN mydatabase!items ;
>   LEFT OUTER JOIN mydatabase!cohead ;
>   ON items.sourcenum==cohead.conum ;
>  ON invitems.item_id=items.item_id ;
> WHERE invitems.invnum=lnInvnum AND items.source="C" AND items.cb_id=0 ;
> GROUP BY items.sourcenum ;
> INTO CURSOR c_invoice_calculatecommission
>
>
>
>And switched to this inner join results in huge speed improvement when in multiuser mode:
>
>SELECT invitems.invnum,invitems.sequence,invitems.item_id,;
> items.source,items.sourcenum as conum,cohead.commcalcby ;
> FROM mydatabase!invitems ;
>  INNER JOIN mydatabase!items ;
>   LEFT OUTER JOIN mydatabase!cohead ;
>   ON items.sourcenum==cohead.conum ;
>  ON invitems.item_id=items.item_id ;
> WHERE invitems.invnum=lnInvnum AND items.source="C" AND items.cb_id=0 ;
> GROUP BY items.sourcenum ;
> INTO CURSOR c_invoice_calculatecommission
>
>
>
>Just a heads up that I also use SET ENGINEBEHAVIOR 70 because of some ways that I use SQL-Select grouping.
>
>There is an index tag on invitems.invnum.
>There are typically 50 or fewer records that match the initial where clause (invitems.invnum=lnInvnum) out of 20,000+ records.
--sb--
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform