2017-11-10 4 views
-4

クエリーの作成/破棄は編集/更新よりも速くですか?編集/更新よりも速くクエリーを作成/破棄しますか?

投稿する機能を追加する場合は、user_id列とpost_id列を持つ新しいテーブル「likes」を作成するか、投稿テーブルに新しい列likes_numberを作成する方が良いでしょうか?

ありがとうございました。

+0

データをフラグするフィールドを作成して新しいテーブルを作成しない – maSTAShuFu

+0

もちろん、あなたは最高の@Hoganです! – maSTAShuFu

答えて

1

これは、多くの異なるパラメータに大きく依存するが、一般的に次の点を考慮してください

  • メタデータフラグに固有のありますか?好きな場合には、次のようなものがあります。好きなようにしたユーザー、好きなときのタイムスタンプ。このデータをポストテーブルで追跡するには、データごとに1つの列が必要です。このメタデータを保存する場合は、別のテーブルを使用する必要があります。

  • 1対多の関係はありますか?この場合、多くの好きな人がいるかもしれません。これは、別の表の行が値を持つことができることを示しています。すべての行にはそのようなメタデータが格納されます。

  • テーブルはどのように使用されますか?ロックはパフォーマンスに影響しますか?あなたのケースで私はそれを疑うが、同様のカウントを変更する行にロックするとパフォーマンスの問題を引き起こす可能性があります。同様のデータが別のテーブルにある場合、影響はありません。

私にとっては、このケースでは別のテーブルが理にかなっているようです。

他のタイプのデータ、たとえば、タスクリストのタスクが終了するフラグなど、別のタイプのデータであってもかまいません。その場合は、列を追加するだけです。それは多くの細部にあまり依存しますが、私は一般的には、編集/更新が高速であると言うだろう - 作成/編集/更新対Destoryはについては


+0

そのため、別の「like」テーブルを明示的にロックする必要はなく、ロックされた行数をカウントするかどうかは関係ありません。 –

+0

@ Clockwork-Muse - 修正していない行が挿入されている場合には、ロックが必要なくなります。 – Hogan

関連する問題