2017-07-05 10 views
0

私は価格データ= EBの大きなテーブルを持つデータベースを持っています。私はそのテーブルに価格データの45日を追加したいので、私は以下の質問を書いた。 2GBの警告とメモリの警告が表示されるため、クエリは実行されないようです。 EBテーブルには716,580レコードがあり、SymbolとDateにインデックスを付けました。MS Access Append Query too too大きい

私はこれを初めて利用しています。 おかげ

INSERT INTO EB (Symbol, Description, [Currency], UNITS, [Date], LOW, HIGH, [CLOSE], INDEX_MIDPOINT, VOLUME, BID, ASK, [OPEN], MEAN) 
SELECT EB_hist.Symbol, EB_hist.Description, EB_hist.Currency, EB_hist.UOM, 
EB_hist.Date, EB_hist.[Low(l)], EB_hist.[High(h)], EB_hist.[Close(c)], 
EB_hist.[Index(u)], EB_hist.[Volume(v)], EB_hist.[Bid(b)], EB_hist.[Ask(a)], 
EB_hist.[Open(o)], EB_hist.[Mean(m)] 
FROM EB, EB_hist 
WHERE (((EB_hist.Date)>(select MAX([Date]) from EB))); 
+0

大量の負荷がかかる前にすべてのインデックスを削除してください。後でインデックスを設定します。 –

+0

ありがとうございますが、EBデータが既にロードされています。したがって、すべてのクエリは、EB_histのデータがEBであるかどうか、それが追加されていないかどうかを確認する必要があります。確かにインデックスがこれに最適ですか? – user7346517

答えて

1

EBとEB_hist間SELECTでのJOIN句を何もありません。この結果、デカルト関係(各テーブルのすべてのレコードが他のテーブルの各レコードに関連付けられています)が発生します。これはおそらくクエリが2GBの制限に達する理由です。これは、Accessデータベース全体の制限です。 SELECT(SELECT Max()サブクエリではなく)からEBを削除してみてください。

名前に空白や句読点/特殊文字(アンダースコアのみの例外)はありません。また、date、close、currencyは予約語であり、予約語を名前として使用しないでください。

+0

伝説!どうもありがとう。 – user7346517