2

現在、あるデータベースから別のデータベースにデータを移行しています。

移行するデータは、製品のバージョンのレビューです。

レビューごとに多くのバージョンがあります。23Kの個別のレビューがあり、レビューがある60kのバージョンは、およそ3つのバージョンごとにレビューを共有することを意味します。

私のJavaアプリケーションでは、ホストデータベースに、レビューデータベースのレビューに関連付けられたreviewIdを持つバージョンが含まれています。

がありHashmap<Integer, Integer>、レビューデータベースからレビューをインポートするたびに、を使用してマップに追加しますmap.put(reviewId, hostId)

レビューデータベースからインポートする前に、すでにインポートされているレビューを使用しているかどうかをハッシュマップに確認します。これはしばらくすると非常に遅くなり始めます。おそらく一時テーブルを使用する方が効率的かどうか疑問に思います。または、より効率的な別の方法がある場合。

コードは次のとおりです: https ://gist.github.com/4064373

考え、提案?

4

1 に答える 1

2

MySQL一時テーブルは、最良の場合、ハッシュマップとしても実装されます。ただし、Javaハッシュマップとは対照的に、実装はより多くの列を処理するように準備されます。また、MySQLとの通信にはオーバーヘッドがあります。したがって、質問のタイトルに答えるために、アプリケーションからデータにアクセスする場合は、JavaHashMapの方が効率的であると思います。SQLサーバー内のデータの相関関係については、状況が異なります。

しかし、Jon Skeetが彼のコメントで指摘したように、整数から整数への単純なハッシュマップは、あなたが説明している種類のアプリケーションにとって深刻なパフォーマンスのボトルネックになるべきではありません。したがって、他の何かが次善の方法で書かれている可能性があります。一見明らかな問題は見当たりませんが、それから、あなたが呼び出すメソッドはたくさんあり、理論的には、それらのいずれかが原因である可能性があります。

于 2012-11-13T09:28:46.883 に答える