一直以来都有这个疑问一张文章表,文章有点赞、浏览记录,评论,都是三个独立的表,查询文章列表数据时需要展示这三个数量。
两种方案:
在文章表里增加三个数量字段,每次被点赞(取消点赞)/评论(删除评论)/浏览,都去更新这个字段,这样未免效率过低了,尤其是浏览量每次都要更新,而且冗余了字段
每次去关联查询总数,这样速度太慢。如果放到缓存/搜索引擎里,那还需要每次都去更新吗,这样也太浪费了
コメントテーブルの数がある程度大きくなると、冗長なフィールドを追加する必要があります。維持する必要のある冗長フィールドがさらにいくつかありますが、パフォーマンスの向上は明らかです。結局のところ、データベースが過負荷になることは誰も望んでいませんよね。
なお、いいね数、コメント数、閲覧数は高いリアルタイム性が要求されるデータではないため、いいね(いいねの取り消し)・コメント(コメントの削除)のたびにこのフィールドを更新する必要はありません/browse では、これらの冗長フィールドを 30 分または 1 時間ごとに更新する時間指定スクリプトを作成できます
サブテーブルの設計は正しいです。データ量の増加を考慮すると、重いテーブルは使いにくいです。後でいいねなどの追加情報があることを考慮すると、これはさらに必要です。
キャッシュを作成し、定期的にキャッシュを更新することのみを推奨します。
コメントテーブルの数がある程度大きくなると、冗長なフィールドを追加する必要があります。維持する必要のある冗長フィールドがさらにいくつかありますが、パフォーマンスの向上は明らかです。結局のところ、データベースが過負荷になることは誰も望んでいませんよね。
なお、いいね数、コメント数、閲覧数は高いリアルタイム性が要求されるデータではないため、いいね(いいねの取り消し)・コメント(コメントの削除)のたびにこのフィールドを更新する必要はありません/browse では、これらの冗長フィールドを 30 分または 1 時間ごとに更新する時間指定スクリプトを作成できます
サブテーブルの設計は正しいです。データ量の増加を考慮すると、重いテーブルは使いにくいです。後でいいねなどの追加情報があることを考慮すると、これはさらに必要です。
キャッシュを作成し、定期的にキャッシュを更新することのみを推奨します。