2

いくつかのデータ (> 100 万行) を含む Mysql テーブルがあります。以下の基準に基づいてデータをソートする必要があります

1) 最新

2) 最も古い

3) 最高評価

4) 最低評価

ソート機能を開発するために推奨されるソリューションは何ですか

1)並べ替えごとに、必要な結合とorderBy条件でDBQueryを実行し、並べ替えられたデータを返します

2)テーブルからすべてのデータ(ソートされていない)を取得し、データをキャッシュに入れます。カスタム コンパレータ (Java) を記述して、データを並べ替えます。

DB への負荷は 1 回だけなので、#2 に傾いています。さらに、アプリケーション コードは DBQuery よりも優れています。

あなたの考えを共有してください....

ありがとう、カーシック

4

7 に答える 7

0

4 つのタスクはありません。2 つのタスクがあります。

最新の並べ替えは、最も古い並べ替えと同じであり、最高評価の並べ替えは、最も評価の低い並べ替えと同じです。

したがって、db を 2 回呼び出す必要があります。はい、データベースでソートします。次に、毎回並べ替えを呼び出す代わりに、次のようにします。

1] track the timestamp of the latest record in the db
2] before calling to sort and retrieve entire list, check if date has changed
3] if date has not changed, use the list you have in memory
4] if date has changed, update the list 
于 2012-04-12T22:23:42.403 に答える
0

私の知る限り、DBにデータをソートさせると、通常はより高速に実行されるはずです。

アプリケーションレベルとデータベースレベルのコードに関しては、ストアドプロシージャの場合には同意しますが、SELECTでのソートは問題ありません。

ユーザーにデータを表示したい場合は、ページングも検討してください (その場合はとにかく db レベルでソートしたほうがよいでしょう)。

于 2012-04-12T22:04:45.203 に答える
0

これが古いスレッドであることは知っていますが、私の検索で出てくるので、私の意見を投稿したいと思います. 私は少し古い学校ですが、その多くの行については、データベースからデータをダンプすることを検討します (各 RDBMS には独自の方法があります。MySQL の MySQLDump コマンドのように見えます: Link ) 次に、並べ替えアルゴリズムまたはツールを使用してこれを処理できます。 Java ライブラリまたはオペレーティング システムで使用できるもの。

データベースに依頼する作業には注意してください。他のリクエストにサービスを提供するために利用可能でなければならないことに注意してください。毎晩のバッチ サイクル タイプのシナリオであり、他に何も要求されないことが確実でない限り、1 つの要求のみにサービスを提供することを "ひざまずく" ことはしないでください。

于 2014-04-02T13:54:35.457 に答える