mysqljson アルゴリズム データ構造 java
データベース フィールドは図に示すとおりです
3 つの主キー day、hour、store、つまり、特定の日の特定の時間における店舗の具体的な売上を知ることができます
日、時間、店舗 データは繰り返すことができますが、3 つのフィールドで構成されるデータは一意です。
Java mysql jdbc が必要です (他のデータベース接続テクノロジーも使用できます) が、言語は Java である必要があります。
データベースを読み込んで次の形式の json を形成するにはどうすればよいですか?
私は自分で jdbc を使用し、マルチレイヤー while ループを使用してこの形式を形成しますが、非常に非効率です。データ量が多いと非常に遅くなります
効率的な解決策を探しています
マルチレベルのネストされた形式
{
2016-07-16:
sales_count:1000
利益 ; 売上数:1001
利益: 201
sales_value:10001
}
]
sales_count:1005
利益:206
sales_value:10007
}
}
; {
1:
[
ナイキ: {
sales_count: 1008
propit: 208
sales_value: 10008
}}
アディダス: {
sales_count: 1009
sales_value: 10009
}
]
2:
[
nike: {
sales_count: 2002
利益: 204
売上高: 20004
}}
{
sales_count: 1505
Profit: 216
sales_value: 10077
}
]
...
}
返信内容:
データベースから取得したデータをオブジェクトに変換し、gson を使用してオブジェクトを json 文字列に直接変換します。
SQL ステートメントを作成した後、必要なのは、レコード セットの大規模な走査とその中の 2 つの判断プロセスだけです。書いてあるって言ってなかったっけ?投稿して変更させてください。
また、この量はどれくらいですか?数M、場合によっては数十、数百Mのボリュームを作成すると、送信だけでも十分に遅くなります。
ここで問題が発生します。つまり、売上データのキーは固定されていない店舗名であるため、実装は非常に複雑になります。
わずかに変更を加えることをお勧めします。複雑さが大幅に軽減され、内部のサブ配列形式が次のように変更されます。
[
{
ストア: ナイキ
販売数:2002
利益:204
sales_value:20004
}、
{
販売数:1505
利益:216
sales_value:10077
}、
...
]
その後、このようなデータを受信するように JavaBean を設計し、オブジェクト ツールを使用してそれを jsonString に変換できます
リスト ts;
}クラスT{
弦の日;文字列ストア;
int sales_count;内部利益;
int sales_value;}
SQL クエリの場合は、サブクエリが多すぎると、大規模な SQL の効率が大幅に低下するため、大規模な SQL を使用しないことをお勧めします。
1. 最初のステップは、最初のレイヤーの基本データをクエリして List(T) を取得することです:
テーブルから個別の日、時間を選択します;
ロジックは明確で、構造は複雑ではなく、たったの2層です。