西安康倍陪诊暖心 发表于 2023-9-14 12:26:10

如何在SQL Server在2005年实现高性能树视图

建立代表树表格的最佳方法是什么?我想实现一个select,insert,update和delete,它能很好地处理大数据。例如,选择必须支持全扩展-获取给定节点的所有子项(以及那里的子项)。
                                                               
    解决方案:                                                               
                                                                使用CTE。
给定树表结构:
id parent name                                                                   Electronics2 1      TV3 3 1            Hi-Fi4 2         LCD5 5 2                                                            Plasma6 3 3            Amplifiers7 3 3                  Speakers此查询将返回id,parent树木的深度水平有序:
WITH    v (id,parent,level) AS   SELECTid,parent,      FROM    table      WHERE   parent =      UNION ALL      SELECTid,parent,v.level         FROM    v      JOIN    table t      ON      t.parent = v.id      )SELECT*FROM    vid parent name                                                                   Electronics2          TV4 2 2                                                                                                                                                                                                                                                                                                                                                                            LCD5 5 2                         Plasma3          Hi-Fi6 3 3             Amplifiers73          Speakers更换parent = 0用parent = @parent只得到一棵树的一个分支。
假如上面有索引table (parent),此查询将有效地处理大表,因为它将递归到 INDEXLOOKUP找到每个父级的一切chilrden。
请更新分支:
WITH    v (id,parent,level) AS   SELECTid,parent,      FROM    table      WHERE   parent =      UNION ALL      SELECTid,parent,v.level         FROM    v      JOIN    table t      ON      t.parent = v.id      )UPDATEtable tSET   column = newvalueWHERE   t.id IN   SELECTid      FROM    v      )@parent分支的根在哪里。
页: [1]
查看完整版本: 如何在SQL Server在2005年实现高性能树视图