上千萬資料查詢解決方案

2021-10-07 08:35:40 字數 1664 閱讀 1871

業務場景

第一版上線(虛擬機器部署)

第二版上線(docker部署 2c4g)

// 過濾欄位不生效 公升級spring data jpa版本也不行

list?>> selections = lists.

newarraylist

(root.

get(

"userid"

), root.

get(

"name"

), root.

get(

"industry"

), root.

get(

"labels"),

root.

get(

"provincename"

), root.

get(

"cityname"))

;query = query.

multiselect

(selections)

;

/**

* * 使用如下方式可以實現指定字段返回,但是不支援分頁

**/criteriabuilder.

multiselect

(select)

;typedquery

q = entitymanager.

createquery

(criteriabuilder)

;

/**

* 至於為什麼返回 object(使用原生sql查詢),請自行搜尋

**/@query

(value =

"select user_id userid, name, '' industry, labels, representative, \n"

+"concat(province_name, \n"

+"case city_name when '' then '' else concat('-', city_name) end, \n"

+"case district_name when '' then '' else concat('-', district_name) end) region, date_format(str_to_date(concat('',month_day), '%y%m%d'), '%y-%m-%d') as createtime\n"

+"from table_name\n"

+"where type = ?1 and user_id in (?2)"

, nativequery =

true

)list]>

getcustomerdetaillist

(integer type, list

userlist)

;

第三版上線(定時任務加快取)
/**

* 區別生成快取時操作id和使用者訪問快取時資料關聯(可以省略)

**/private string sid;

/** * 預設查詢條件總記錄數

**/private

long total;

/** * 主鍵id(也可以用使用者id,但是使用使用者id需要和type查詢)

**/private list

idlist;

mysql千萬級資料查詢

1.mysql的資料查詢,大小欄位要分開,這個還是有必要的,除非一點就是你查詢的都是索引內容而不是表內容,比如只查詢id等等 2.查詢速度和索引有很大關係也就是索引的大小直接影響你的查詢效果,但是查詢條件一定要建立索引,這點上注意的是索引字段不能太多,太多索引檔案就會很大那樣搜尋只能變慢 3.查詢指...

oracle千萬級資料查詢優化

需求 組合查詢,按條件統計某幾個欄位取前100條記錄 問題 沒建索引導致查詢結果耗時5秒多,不能忍受。解決方法 建索引,在哪個欄位建?在這裡先提下oracle的sql語句的執行。oracle在執行sql語句之前會用優化器optimizer對sql語句進行解析,解析出最優的執行計畫再執行,這樣所花費的...

資料庫處理千萬級資料的解決方案

在大中型專案中,在資料庫設計的時候,考慮到資料庫最大承受資料量,通常會把資料庫或者資料表水平切分,以降低單個庫,單個表的壓力。我這裡介紹兩個我們專案中常用的資料表切分方法。當然這些方法都是在程式中使用一定的技巧來路由到具體的表的。首先我們要確認根據什麼來水平切分?在我們的系統 sns 中,使用者的u...