質問

3層アプリケーションを開発しましたが、データベースからデータを取り込むことに関して問題があります。私のアプリケーションには、データベースから大きなデータを照会するウィンドウがあり、このプロセスには非常に長い時間がかかります。 (私のクライアントはこれまでのところサーバーから離れており、その間の接続は128 KB / sです)。

次に、この問題を解決する解決策を考えました。解決策は、y秒ごとにデータのxレコードを取り込むことです。 (例:最初にUIに表示するレコードを10個作成し、5秒ごとにさらに10行を表示します。)

これは、この問題を解決する良い解決策ですか?これを解決するより良い方法はありますか?

役に立ちましたか?

解決

表示目的の場合は、ページングを使用する必要があります。このバリエーションには、UIが次の「ページ」を取得するものがあります。ユーザーがスクロールバーで詳細情報にアクセスしようとしたときのレコードの数。 データを集計する必要がある場合は、クエリで実行し、データ全体がネットワークを移動しないようにします。 本当に/絶対にデータ全体を取得し、それでいくつかのプロセスを実行する必要がある場合、一度にロードするには大きすぎるかどうかを検討してください。その場合、データのチャンクを取得し、関連するプロセスを実行してから、別のチャンクを取得します(など)。とにかく、UI(スレッド/非同期操作)をブロックしないアプローチでそれを行う必要があります。

他のヒント

Freddyは私にそれを打ち負かしましたが、例として、多くのデータベースビューアーは、スクロールバーを使用して次のページ/データビューを自動的に取得するため、視野に必要なデータのみを入力することに気付くでしょう。

Webサイトについて考える場合、ほとんどの場合、一度にロードしないようにデータをページングします。

レイジーロードを実行するオプションですか?

アプリケーションUIで許可されている場合は、複数のページにレコードを表示できます。

また、非同期呼び出しを使用してデータを取得することをお勧めします。これにより、クエリ中にアプリをフリーズさせないでください(デスクトップアプリの場合)。

Webアプリの場合は、AJAXの使用を検討してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top