- ベストアンサー
Accessクエリの、JOINの数の限界について
トランザクション系の大きなテーブルAに対し、多数のコード系テーブル(コードに対する名称を格納してあるテーブル)をJOINしてクエリを作っています。 テーブルAの大きさは、約200項目*約1000行程度です。 テーブルAに対し、次々にコード系テーブルをJOINしていっていたのですが、コード系のテーブルが19個になった途端にクエリが反応しなくなりました。 18個目までは、クエリを実行し、通常通りデータを参照することができるのですが、19個になった途端、クエリが反応しなくなってしまいました。具体的には、クエリのアイコンをダブルクリックした時点で固まったようになり、反応しなくなりました。30分ほど放っておいたのですが反応はないままでした。 なお、このクエリに使っているテーブルはイントラネットで繋がっているサーバのOracleDBからリンクしているテーブルです。そのため、通常、クエリを実行するとOracleへのログインダイアログが表示されるのですが、上記のコード系テーブル19個をJOINして実行した際には、このログインダイアログも表示されませんでした。このことから、反応がないのは性能的な問題ではなく、何らかの制限がかかっているのではないかと疑っています。 Accessのクエリには、JOINするテーブル数に上限があるのでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
レコードセットの制限を越えたのでないかと思うのですが・・。 Accessの仕様としてクエリのテーブル数が32・レコードセットのフィールド数が255・レコードセットのサイズが1GB・ネストしているクエリのレベルの数が50などの制限があります。 >コード系のテーブルが19個になった途端にクエリが反応しなくなりました。 19個目のテーブルをJOINした際に何か制限を越えたのではないかと思いますが。 フィールド数が超えたとか・・。 レコードセットのフィールド数など確認してみてはどうでしょうか。
その他の回答 (1)
- papayuka
- ベストアンサー率45% (1388/3066)
こちらにある「リレーションシップの設定数」がそれに該当するのか正直良く解りませんが、似たような経験があります。 http://hp.vector.co.jp/authors/VA014071/tips/spec_ac.html 私の場合は元テーブルが外部テーブルでは無くフィールド数も数十程度だったので、クエリーでテーブルを2分割してから、コード系と繋いで、再度それらを繋げました。