sendagaya.rb #317 参加記録

ポリモーフィック関連、indexの貼り方、Vue.jsの話題が上がった。

Vue.jsは全くわからないので割愛。

Q: ポリモーフィック関連はコントローラでは使わないのか。業務ではどういうものに使うのか?

A: コントローラではほとんど使わない。業務ではCommentやFavoriteやNotificationなど、どのモデルについていても ふるまいが全く同じもの にだけ使う。

参考

そろそろポリモーフィック関連について一言いっとくか - Qiita

indexの話

  • indexとは?
    • 索引。あると検索が早くなる。ただし付けすぎもよくない。
      • つけすぎるとindexを更新する作業自体が重くなってしまう。
        • 大体のサイトはReadの方が多いのでWriteの重さはそれほど気にしなくてもいいのでは、という意見もあった。
  • 遅いクエリをどうやって見つけるか?
    • 監視ツール
    • explain(実行計画)
  • index最初からつける?運用始まってからつける?
    • 意見A:運用始まってから付けたほうが効率のいいindexを付けられる。
    • 意見B:レスポンスは徐々に悪くなることが多い。そうなってからindex付け直すのはやりづらいので最初から付けておいた方がいい。
    • 意見C:サイトの規模が大きいとDBアクセス止められない場合がある。indexがオンラインでDB停止させずに付けることができたとしても、作成中は遅くなるはずなのでそれを許容できないかも。
  • 複合whereの順番
    • 今は関係ない(ソース不明)
  • 複合indexの順番
    • 順番によってindexを使うかどうかが変わるので、どの順番でindexを作るかが非常に重要

感想

  • ポリモーフィック関連を「DRYに書く仕組み」だと大きな勘違いをしており、その誤った認識を正すことができて本当に良かった。
  • indexは最初からつけておいたほうがいいのではないかと思った。
  • 複合indexは順番が重要だと分かった。速度が重要なDB設計するときは意識しようと思った。