В вашем примере подзапрос, т.е. (SELECT ITEMCODE FROM ITEMLIST) будет выполняться для каждой строки в dfbfile_1, dfbfile_2 и dfbfile_3.Это будет особенно плохо, если на itemlist.itemcode нет индекса.Поэтому следующее может работать лучше.
Если предположить, что dfbfile_1, dfbfile_2 и dfbfile_3 имеют одинаковую структуру, то:
Select dfbfile_1.* from dfbfile_1 left join itemlist on itemlist.itemcode = f1.itemcode;
union select dfbfile_2.* from dfbfile_2 left join itemlist on itemlist.itemcode = dfbfile_2.itemcode;
union select dfbfile_3.* from dfbfile_3 left join itemlist on itemlist.itemcode = dfbfile_3.itemcode;
into dbf tmp_1
Однако, если это приведет к тому, что tmp_1.dbf будет> 2 ГБ, вы получитеошибка.Невозможно обойти ограничение, заключающееся в том, что любой файл, открываемый VFP, не может быть больше этого размера.