セカイモンの裏側

★毎週木曜日更新★ 海外ショッピングサイト『セカイモン』のブログです。私たちスタッフの仕事風景や日々の出来事など、     “セカイモンの舞台裏”とも言える日常を綴っていきます。

MySQL 他のテーブルを参照してUPDATEとカラムの追加

他のテーブルを参照してUPDATEする場合

update h_mypage_history, tmp_settlement
set h_mypage_history.shipping_fee_settlement = tmp_settlement.current_amount
where h_mypage_history.BUNDLING_ID = tmp_settlement.settlement_key;

このSQLupdate h_mypage_history tmp_settlementのようにコンマが抜けてたから、

エラーが出て若干つまった

 

10:52:29 update `h_mypage_history` `tmp_settlement` set `h_mypage_history.shipping_fee_settlement` = `tmp_settlement.current_amount` where `h_mypage_history.BUNDLING_ID` = `tmp_settlement.settlement_key` Error Code: 1054. Unknown column 'h_mypage_history.BUNDLING_ID' in 'where clause' 0.015 sec

こういうエラーが出てきたけども、単純にコンマが足りないミスだった。

 

bashalog.c-brains.jp

 

alter add が遅い?? 一瞬かと思ったけどレコード分待たないといけないみたい。。

結局10分ぐらいかかった。残念な話。

試しにDROP COLUMNをしても一瞬とかではなく10分ぐらいかかる。

レコード多いテーブルにカラムを追加、削除する時はメンテナンスが必要!?

となると運用がさらに難しくなりそう。。。

key_buffer_size を変更すると早くなるみたい、やっぱりMySQLはデフォルトでは運用が難しくカスタマイズがそこそこ必要っぽい。

やっぱり俺はPostgresが好きですな。

d.hatena.ne.jp

よく100万件~1000万件ぐらいの場合は件数としてはたいした事がなくて、インデックスを貼れば問題ないみたいな話になるけど、100万件以上はパフォーマンスに影響すると思う。特に主要テーブルとかになるとカラム数とかも増えるんで

件数は100万件を超えない、カラム数は10カラムを超えないを心がけたいところです。