質問するログイン新規登録

回答編集履歴

2

補足

2020/03/21 07:18

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -3,4 +3,19 @@
3
3
 
4
4
  容量が65,500KB程度のデータ量なら、ネットワーク環境にもよりますが、テーブルの設計、インデックスの設計、クエリの設計が最適化されていればそれほど重くなるとは思えません。まずはその辺りを見直すことから始めてはどうでしょうか。
5
5
 
6
- SQLサーバー、オラクルなどのRDBMSへの移行はそれなりにコストがかかりますので、それからでも遅くないと思います。
6
+ SQLサーバー、オラクルなどのRDBMSへの移行はそれなりにコストがかかりますので、それからでも遅くないと思います。
7
+
8
+ ---
9
+ 補足
10
+
11
+ パススルークエリとは、サーバー側でSQL処理を実行してその結果のみを受け取るという仕組みです。
12
+ 一般的にサーバーは高速なマシンを使うので、クライアントよりは高速に処理できる、
13
+ また、結果データのみ送信されるのでネットワークの負荷も軽くなり高速に処理できるわけです。
14
+ SQLサーバー、オラクルなどのリレーショナルデータベースマネージメントシステム(RDBMS)では、サーバーで常にマネージメントシステムが稼働していて、クライアントから受け取った命令を実行できるようになっています。
15
+ Accessはファイル共有型リレーショナルデータベースというもので、サーバー側のマネージメントシステムはなくOSのファイル管理システムを利用してデータを共有しています。サーバーからすべてのデータを受け取って、ローカルでSQL処理を行います。ですので、サーバー側に処理を依頼するパススルークエリは使えません。
16
+
17
+ 「サーバーからすべてのデータを受け取って」と書きましたが、インデックスが設定してあると、インデックスを有効に使えるクエリ設計だと、まず、インデックスデータを受け取って、それを元にある程度必要なデータを絞り込んで受け取るという処理を実行しているようです。ですので、テーブル設計、インデックスの設定、クエリの設計は高速化に重要になります。
18
+
19
+ [抽出条件でインデックスが無効になる場合 - hatena chips](https://hatenachips.blog.fc2.com/blog-entry-83.html)
20
+
21
+ [結合条件でインデックスが無効になる場合 - hatena chips](https://hatenachips.blog.fc2.com/blog-entry-440.html)

1

誤字修正

2020/03/21 07:18

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  リンク先がアクセステーブルならパススルークエリは使えません。
2
- バックエンドSQLサーバー、オラクルなどのRDBMSである必要があります。
2
+ バックエンドSQLサーバー、オラクルなどのRDBMSである必要があります。
3
3
 
4
- 容量が65,500KB程度のデータ量なら環境にもよりますが、テーブルの設計、インデックスの設計、クエリの設計が最適化されていればそれほど重くなるとは思えません。まずはその辺りを見直すことから始めてはどうでしょうか。
4
+ 容量が65,500KB程度のデータ量なら、ネットワーク環境にもよりますが、テーブルの設計、インデックスの設計、クエリの設計が最適化されていればそれほど重くなるとは思えません。まずはその辺りを見直すことから始めてはどうでしょうか。
5
5
 
6
6
  SQLサーバー、オラクルなどのRDBMSへの移行はそれなりにコストがかかりますので、それからでも遅くないと思います。