2011-06-18 14 views
2

簡単な質問:D。私はそれを行う方法を知っていますが、私は速くそれをやらなければなりません。MySQLによる高速クロステーブル更新

最も効率的な方法は何ですか?

シナリオ:tableA.primarykey = tableB.primarykeyに基づいて2つのテーブル、tableAtableBtableB.columnBからtableA.columnAを更新。

問題:tableAおよびtableBは、それぞれ10.000.000レコードを超えています。

答えて

8
update TableA as a 
    join TableB as b on 
     a.PrimaryKey = b.PrimaryKey 
set a.ColumnA = b.ColumnB 

1000万行を更新するのは高速にはできません。まあ...少なくとも1つの行の更新と比較して。

あなたができる最善:フィールドに参加する上

  • インデックスが、あなたが該当する場合、これらのフィールドはwhere条件によって主キー
  • 制限されているとして、これを持っています。それをスピードアップするために条件が必要なインデックスをカバーするインデックス。
+3

これはかなり答えです。それがあなたのために十分に速くないなら、おそらくあなたはより良い索引付けおよび/またはより速いハードウェアを必要とします。 – Flimzy

関連する問題