› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
yangwenqian
V2EX  ›  MySQL

打算做个评论功能,表结构该如何设计?求助各位大神。

  •  
  •   yangwenqian · Jun 26, 2015 · 7929 views
    This topic created in 4113 days ago, the information mentioned may be changed or developed.
    我的网站有个文章列表页,没有内容页。
    评论是显示在每条记录下面的。
    每次打开这个列表页,加载的顺序是:
    ①根据用户id,查询该用户id下的文章列表。
    ②根据该列表中每一篇文章,依次去查询评论。
    ③组合到页面,列表页才显示出来。
    数据少的时候,就没什么感觉。但文章多、评论多的话,效率就不行了。缓存、静态那些倒是有,现在就纠结数据库这块。
    传统的网站,评论都是在内容页显示的,就不存在这个问题。我的网站评论是在列表页显示,求助该如何设计表?
    10 replies  •  2015-06-29 11:31:22 +08:00
    sharewind
        1
    sharewind  
       Jun 26, 2015
    直接用第三方的评论系统不就好了
    qiayue
        2
    qiayue  
       Jun 26, 2015
    假设有十篇文章,你先循环一遍把十个文章 ID 拿到手
    然后去评论表找评论 where article_id in (1,2,3,4...) 括号里是十个文章 ID
    这样查询评论表,就只需要查询一遍,不需十遍
    kaneg
        3
    kaneg  
       Jun 26, 2015
    你可以在页面先只加载列表,然后每个列表的评论在通过ajax异步加载,甚至只显示评论数量,让用户点击查看评论再去加载。这样就可以省去很多无用的消耗,因为不是所有的评论都会有人去看的
    em70
        4
    em70  
       Jun 26, 2015
    给文章表加一个字段,把当前评论生成HTML代码放这个字段里,每次显示文章再显示这个字段的内容作为评论就行了,每次用户为这个文章发表评论都更新这个文章记录下的这个字段的内容即可. 因为发评论的人远远少于看评论的人,大量的资源可以节约下来.
    ClearGC
        5
    ClearGC  
       Jun 26, 2015 via Android
    disqus 和 多说 欢迎你
    withrock
        6
    withrock  
       Jun 27, 2015
    感觉用非结构化数据库更容易解决你这个问题。
    每个item 都是文章+评论列表,这样就不用考虑你所说的这个问题了。
    withrock
        7
    withrock  
       Jun 27, 2015
    不好意思,才看到这个在MySQL分支下,请直接忽略我的上一个回答。
    akira
        8
    akira  
       Jun 28, 2015
    一分钟刷新一次列表页,性能在怎么低也足够了吧
    dododada
        9
    dododada  
       Jun 28, 2015
    上nosql
    realpg
        10
    realpg  
       Jun 29, 2015
    一个文章entry只显示20条评论,多于20条的做一个ajax的展开功能,这个单文章评论展开就是基于article_id调用单表索引检索了,性能很好
    20条评论本身,在article表里面做一个冗余,记录20条评论内容
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2447 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 16:02 · PVG 00:02 · LAX 09:02 · JFK 12:02
    ♥ Do have faith in what you're doing.