乙個是用來存放資料的表t(1000萬級別),乙個是字典表dict(小於1w條)
因表t是外面拷貝來的,裡面的很多欄位都是字典**,我現在需要將t中的所有字典**全部翻譯過來。
假設t的某個欄位----gjdq(國家地區)存放的是**,如chn等,在dict表中有lb(類別),dm(**)和dmhy(**含義)三個字段,這裡可以保證在同乙個類別下,**與**含義是一一對應的
sql語句是這樣寫的:
update t set t.gjdq = nvl((select dict.dmhy from dict where dict.lb='gjdq' and dict.dm=t.gjdq),t.gjdq);
commit;
如果資料量太大,這種方法會很慢.
可以在insert到t的時候就做這個轉換,不要事後update。
merge into t
using (select t.rowid rid, dict.dmhy
from t join dict on (dict.lb='gjdq' and dict.dm=t.gjdq)
) data
on (t.rowid = data.rid)
when matched then update set t.gjdq = data.dmhy;
還可以新建乙個表
create table t2 as
select t.bh,t.xm
,nvl(dict1.dmhy,t.gjdq) as gjdq
,nvl(dict2.dmhy,t.xb) as xb
,nvl(dict3.dmhy,t.khyh) as khyh
from t left join dict dict1 on dict.lb='gjdq' and dict.dm=t.gjdq
left join dict dict2 on dict.lb='xb' and dict.dm=t.xb
left join dict dict3 on dict.lb='khyh' and dict.dm=t.khyh
然後把t刪掉,把這個表改名字,速度會更快.
在nginx中x sendfile解決方案
例如下面的 12 3 4 5 6 7 8 9 10 11 12 13 使用者身份認證,若驗證失敗跳轉 authenticate file determine file 讀取檔案內容 content file get contents file 傳送合適的 http 頭 header header c...
Spark 中OOM的現象 原因 解決方案和總結
參考 spark的executor的container記憶體有兩大部分組成 堆外記憶體和executor記憶體。堆外記憶體 有spark.yarn.executor.memeoryoverhead引數設定。如果沒有設定,則使用 val executormemoryoverhead sparkconf...
巨集在C 中的替代解決方案
1.常量定義 例如 define num 100替換為 const int num 100 const常量放在標頭檔案中,也不必擔心存在多個例項的問題,對於const修飾的變數,編譯器一般也會對其進行優化,不會出現多重定義的問題。c語言中還有乙個特殊的常量定義 null。其一般的定義為 define...