Я использую интерфейс MS Access 2003 для доступа к данным на сетевом диске, принадлежащем приложению Visual Foxpro 9, через odbc, и это кажется невероятно медленным - около 1400 записей в одной конкретной таблице, и это требуется хорошая минута для загрузки интерфейса доступа, хотя при использовании основного средства просмотра DBF или приложения, к которому принадлежат таблицы, это происходит мгновенно. При запросе данных это быстрее, чем открыть представление всей таблицы, но все же намного медленнее, чем я ожидал; компьютер, к которому он обращается, находится в той же сети, и в настоящее время доступ к нему через приложение медленнее, чем к веб-серверу SQLServer, количество записей в котором в 10 раз больше.
Любые предложения о том, что я могу попробовать с помощью ссылки VFP ODBC, чтобы ускорить его, которые неочевидны, будут приняты.
EDIT
Спасибо, Дейв, в настоящее время я просто играю с запросом, пытаясь заставить его работать на вкладке запроса Access ...
Запрос в его текущем состоянии занимает около 4 минут. Он возвращает кросс-таблицу, содержащую 10 строк информации, на основе критериев ввода приблизительно 230 записей - я пробовал это без объединений и полей из таблицы Group, но разница в скорости незначительна.
Просто взглянем на это:
Allsales содержит около 50 полей и 15 000 записей.
Акция содержит около 100 полей и 500 записей
Группа содержит 3 поля и 8 записей.
SELECT allsales.type, allsales.branch, allsales.terminal, allsales.date, Sum(allsales.totalprice) AS SumOftotalprice, Sum(allsales.discamount) AS SumOfdiscamount, Sum(allsales.tender1) AS SumOftender1, Sum(allsales.tender2) AS SumOftender2, Sum(allsales.tender3) AS SumOftender3, Sum(allsales.tender4) AS SumOftender4, Sum(allsales.tender5) AS SumOftender5, Sum(allsales.tender6) AS SumOftender6, Sum(allsales.tender7) AS SumOftender7, Sum(allsales.tender8) AS SumOftender8, Sum(allsales.tender9) AS SumOftender9, Sum(allsales.tender10) AS SumOftender10, Sum(allsales.tender11) AS SumOftender11, Sum(allsales.tender12) AS SumOftender12, Sum(allsales.loypoints) AS SumOfloypoints, Count(allsales.type) AS Fuzz, groups.desc
FROM (stock RIGHT JOIN allsales ON stock.plu = allsales.plu) LEFT JOIN groups ON stock.cgroupid = groups.id
GROUP BY allsales.type, allsales.branch, allsales.terminal, allsales.date, groups.desc, allsales.reportdate
HAVING (((allsales.reportdate)=#3/1/2010#));