2017-07-10 6 views
0

私はMYSQL:高速更新のためのヘルプ

Table 1  
id | value 
1 0 
2 0 
3 0 ... 

Table 2 
t1_id | t2_id 
1  2 
1  3 
3  5 ... 

は、約150,000表1の行、と私は必要なおよそ1,3万人の表の2を持っているMySQLの中で私のテーブルの上に高速なアップデートを入手するためにいくつかの助けが必要t1.idは、いくつかの異なるパラメータなし表2

update table1 t1, table2 t2 
set value = 1 
where t1.id = t2.id; 

に存在する場合t1.value = 1を設定し、それは遅いすべてのT1の行を更新すること、IDごとに何回行います。

喜んで助けてください。

+1

を参照してくださいhttps://stackoverflow.com/questions/15209414/how-to-do-3-table-join-in- update-query - JOINを使用すると、より速く実行できるかもしれません。 – ADyson

+0

あなたにはお答えいただきありがとうございます。しかし、結合はテーブル1の各値に対して多くのエントリを生成するので、各IDに対して多くの更新を行います。 –

答えて

1

かについて:

UPDATE t1 
    SET t1.value = 1 
    FROM table_t1 t1 
WHERE EXISTS (SELECT 1 
       FROM table_t2 t2 
       WHERE t2.id = t1.id 
       ) 
+0

あなたの答えはありがたいですが、構文エラーが表示されます: 'from'はこの位置では有効な入力ではありません –

+0

@HerbertHabermann FROM行を削除してみてください。 –

+1

@Esteban P. from FROM line thatsはすばらしい、数秒で動作します。どうもありがとうございました ! –

0

かについて:

update table1 
set value=1 
from table2 
where table1.id=table2.t1_id 
+0

お返事ありがとうございます。@Esteban P. solutionはうまくいきます! –

+0

このコードスニペットは問題を解決するかもしれませんが、[説明を含む](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。また、コードと説明の両方の可読性が低下するため、説明的なコメントを使用してコードを混乱させないようにしてください。 – FrankerZ

関連する問題