› 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
MIUIOS
V2EX  ›  MySQL

面试题:数据库实现树结构该如何优化性能?

  •  
  •   MIUIOS · Jul 16, 2020 · 3904 views
    This topic created in 2268 days ago, the information mentioned may be changed or developed.

    今天去面试,面试官问了一个关于帖子回复的问题,评论可以无限回复下去的,类似:评论 -》 子评论 -》子子评论 这样,我就说可以使用递归来遍历所有子节点,数据库结构设计多一个保留父级点 ID,但是他说性能不行,该如何优化

    fsiisx
        1
    fsiisx  
       Jul 16, 2020
    Closure Table ?
    MIUIOS
        2
    MIUIOS  
    OP
       Jul 16, 2020
    闭包表 对哦 这玩意怎么给忘了
    jiyingze
        3
    jiyingze  
       Jul 16, 2020 via iPhone
    关联最顶级的 ID,一次全查出来?内存里组织树结果
    yungo8
        4
    yungo8  
       Jul 16, 2020 via Android
    @jiyingze 我也这么想的,缩小了范围。面试官提出的这个无限回复感觉是个伪需求,怎么可能会有无限回复下去这种情况,就算有,存个层级,再分级让用户点加载来展示
    MIUIOS
        5
    MIUIOS  
    OP
       Jul 16, 2020
    @yeqizhang 确实是个伪需求,我参考了目前流行的讨论 APP 都是最多三级 所以找不到好的解决方案 但是刚才看了一楼提了一个闭包 我感觉可以记录左右节点 就可以避免去递归了
    yungo8
        6
    yungo8  
       Jul 16, 2020 via Android
    @totoro52 对,看看贴吧和知乎的评论设计就知道
    hyperbin
        7
    hyperbin  
       Jul 16, 2020 via Android
    《 SQL 反模式》里有讲闭包表
    MOONYANYI
        8
    MOONYANYI  
       Jul 16, 2020
    无限级的话 , 弄两个表 , 一个存层级和内容 , 一个存它们之间的关系 .也就是把邻接表和闭包表结合起来
    holystrike
        9
    holystrike  
       Jul 16, 2020
    网易评论就是一层一层套下去的啊
    imkerberos
        10
    imkerberos  
       Jul 16, 2020
    B+Tree
    bzj
        11
    bzj  
       Jul 17, 2020   ❤️ 1
    其实你应该反问他为什么性能不行,数据库只查询一次,在代码中逻辑处理,不知道哪里不行
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2443 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 12:37 · PVG 20:37 · LAX 05:37 · JFK 08:37
    ♥ Do have faith in what you're doing.