mysqljson演算法資料結構java
資料庫欄位如圖
三個主鍵 day,hour,store ,就是按要可以查出某天的某小時的某個店舖的具體銷售情況,
day,hour,store的資料可重複,但三個欄位組成的資料是唯一的。
要求用java mysql jdbc(其它資料庫連接技術也可以)但語言必須是java。
如何讀取資料庫組成下面這種格式的json
我自己用jdbc然後多層while循環可以組成這種格式,但是非常低效。資料量一大就很慢很慢了
求高效率的解決方法
多層嵌套格式
{
2016-07-16:
[
nike:{
sales_count:1000 sales_count:1000 :200
sales_value:10000
}
adidas:
{
sales_count:1001
profit:201
]
nike:{
sales_count:1002
:203
sales_value:10004
}
adidas:
{
sales_count:1005
profit:206
]
......
7-17:
{
1:
[
nike:{
sales_count:1008
profit:208
sales_value:10008
}
adidas:
{
sales_count:1009
profit:209
sales_value:10009
}
]
2:
[
:2002
profit:204
}
sales_count:1505
}
]
....
}
回覆內容:
將資料庫取出的資料轉換成對象,然後用gson將物件直接轉換成json字串!
你的SQL語句寫好了,只要一個對記錄集的大遍歷,在裡面加兩個判斷處理就可以了。你不是說寫好了嗎?貼出來讓人修改。
另外,這個數量大是大到什麼程度?你要是搞出來好幾M甚至幾十上百M的體積,光是傳輸也夠慢了。
你這裡有個問題,就是裡面銷售數據的key是店名,也就是不固定的,所以實現會非常複雜。
建議你稍微改造一下,複雜度會降低很多,裡面的子陣列格式改為:
[
{
store: nike
sales_count:2002
profit:204
sales_value:20004
{
sales_count:1505profit:216 sales_value:10077
},class Result {
List ts;}
class T {
String day;
int hour;
List stores;
}
class Store {
String store;
int sales_count;
int profit;
int sales_value;
}
sql查詢的話,建議不要用大sql,因為子查詢太多,太多子查詢會指數級減慢大sql效率,用java循環執行簡單SQL。
1。 第一步,查詢第一層的基本數據,得到List(T):
select distinct day, hour from Table;
邏輯清晰,結構也不複雜,就兩層。