在表中關於翻譯字典的解決方案 總結網上的部分資料

2021-08-27 01:16:19 字數 1051 閱讀 5753

乙個是用來存放資料的表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...