第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

面對千萬級別的數(shù)據(jù) 進行統(tǒng)計,誰有解決方案?

面對千萬級別的數(shù)據(jù) 進行統(tǒng)計,誰有解決方案?

有只小跳蛙 2018-11-11 17:08:14
求助: 面對 千萬級別的數(shù)據(jù) 進行統(tǒng)計,誰有解決方案? 過程:一個表,表有70列,3千萬行, 先用where篩選 可能 還有 5個左右like查詢,group by 三個列,得到新的table,再對這個table 進行至少2層嵌套的sum,count等.求答案.先謝謝了.1)原表3千萬行, where篩選出來的就有500萬行~800W.再對這個結(jié)果進行至少2次嵌套統(tǒng)計,  中間統(tǒng)計我想過了,但因為提交的數(shù)據(jù)是有范圍的,即范圍和條件不固定.無規(guī)律可找,所以沒法提前處理數(shù)據(jù),只有等客戶提交條件后才能方向統(tǒng)計2)下面是一條sqlexec('SELECT CASE WHEN 參與評價處方數(shù) IS NULL THEN 0 Case這里省略10個Caseinto ['+@OldTable+']from(SELECTCOUNT(1) as 參與評價處方數(shù),SUM(YPZS) as 用藥品種總數(shù),這里省掉10個以上sumSUM(JZKJYCFCS) AS 急診患者抗菌藥處方數(shù)FROM(SELECT VISIT_DATE AS CFRQ, PATIENT_ID AS BRBS, ORDERED_BY AS KSDM,COUNT(1) YPZS,SUM(CASE WHEN DNDCID IS NOT NULL THEN 1 ELSE 0 END) AS TYMCS,下面省掉10個以上sumAS JZKJYCFCSFROM{0}GROUP BY VISIT_DATE, PATIENT_ID, ORDERED_BYHaving 1=1 {1}) AS TEMP ) as ACREATE TABLE ['+@Table+']這里省掉70個列,下面是建表和索引.針對新查出來的表UPDATE ['+@Table+']SET 平均每張?zhí)幏接盟幤贩N數(shù) = case when下面再省掉所有列的update部分,下面是 row_number()的分頁3)以上語句大寫字母是列的名稱或別名,{}里面是傳入的其它條件或表名
查看完整描述

2 回答

?
MM們

TA貢獻1886條經(jīng)驗 獲得超2個贊

建議思路, 上面示例代碼,皆是大批量的查詢,增加適當(dāng)?shù)乃饕?查看執(zhí)行時的執(zhí)行計劃, 從右到左查看其數(shù)據(jù)流, 能盡早CUT掉的數(shù)據(jù)就盡早用WHERE條件去掉, 分析最合適的索引建在需要的表上, 在建索引時盡量Include選擇中的所有列, 保證索引覆蓋,如列太多, 將此索引建為聚族索引

 

補上面關(guān)于分表與緩存的建議:

分表:你上面示例中至少有70列, 得仔細看它們的數(shù)據(jù)類型, 如若一行超過8K,則分表勢在必行, 因為會造成一行分在兩個不同的頁里面存儲, 導(dǎo)致IO降低。

緩存:SQL會自動緩存的, 如果客戶的條件中有很多一樣的, 則可以預(yù)跑一些數(shù)據(jù)來進行緩存, 如大多都不一樣, 如包含當(dāng)前時間等參數(shù), 緩存則沒多少意義。


查看完整回答
反對 回復(fù) 2018-11-15
?
慕標琳琳

TA貢獻1830條經(jīng)驗 獲得超9個贊

數(shù)據(jù)量太大的話要分表,我目前的做法是把要統(tǒng)計的部分用分表存儲,然后加上緩存,也就是用空間換時間的做法

查看完整回答
反對 回復(fù) 2018-11-15
  • 2 回答
  • 0 關(guān)注
  • 1400 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號