いくつかの情報と文字列 ID を持つ 1 つのテーブル (Table1) があります。
いくつかの詳細情報と同様の文字列 ID を持つ別のテーブル (Table2) があります (中間に余分な文字がありません)。
私はもともとテーブルに参加していました
t2.StringID = substring(t1.StringID,0,2)+substring(t1.StringID,4,7)
しかし、それは遅すぎたので、既に Table2 の PrimaryID にマップされている新しい列を Table1 に作成し、その列にインデックスを付けることにしました。
したがって、その新しい列を更新するには、次のようにします。
select distinct PrimaryID,
substring(t2.StringID,0,2)+
substring(t2.StringID,4,7)) as StringIDFixed
into #temp
from Table2 t2
update Table1 tl
set t1.T2PrimaryID = isnull(t.PrimaryID, 0)
from Table1 t11, #temp t
where t11.StringID = t.StringIDFixed
and t1.T2PrimaryID is null
数秒で一時テーブルが作成されますが、更新は現在 25 分間実行されており、終了するかどうかさえわかりません。
テーブル 1 の行数は 45MM、テーブル 2 の行数は 1.5MM
膨大な量のデータであることはわかっていますが、それでもそれほど難しくはないと思います。
Sybase IQ 12.7 です。
何か案は?
ありがとう。