1

MS Access 2003 フロント エンドを使用して、Visual Foxpro 9 アプリケーションが所有するネットワーク ドライブ上のデータに odbc 経由でアクセスしています。基本的な DBF ビューアーまたはテーブルが属するアプリケーションを使用している場合は瞬時にロードされますが、Access インターフェイスにロードするのに数分かかります。データをクエリするときは、テーブル ビュー全体を開くよりも高速ですが、それでも予想よりもはるかに遅くなります。アクセスしているマシンは同じネットワーク上にあり、アプリケーションを介したアクセスは、現在、その 10 倍のレコードを持つ Web ホスト型 SQLServer よりも低速です。

VFP ODBC リンクを使用して速度を上げるために試してみることができることについて、明白ではない提案をいただければ幸いです。

編集

ありがとう Dave、現在、Access の [クエリ] タブ内で動作するようにクエリをいじっています...

現状のクエリの実行には約 4 分かかります。約 230 レコードの入力条件に基づいて、10 行の情報を含むクロス集計が返されます。グループ テーブルの結合とフィールドなしで試してみましたが、違いはごくわずかです。

それにいくつかの視点を置くだけです:

Allsales には約 50 のフィールドと 15,000 のレコードが含まれます Stock には約 100 のフィールドと 500 のレコードが含まれます Groups には 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#));
4

2 に答える 2

5

ODBC ドライバー構成でのロギングをオフにします。

于 2010-03-02T16:42:10.100 に答える
0

FoxPro OLEDB ドライバーを試して、違いがあるかどうかを確認できます。Access アプリケーションに問題があり、FoxPro から取得したデータをどのように処理するかのようです。FoxPro をデータ ストアとして使用する ASP/ASP.NET ページを多数作成しましたが、ご説明のような問題はありませんでした。実行速度が遅いのは VFP ODBC データ転送でしょうか? おそらく、データ アクセス コードを投稿することで手がかりが得られるでしょうか?

于 2010-03-02T16:42:19.907 に答える