找回密码
 立即注册

QQ登录

只需一步,快速开始

跷跷板

中级会员

86

主题

229

帖子

979

积分

中级会员

积分
979
跷跷板
中级会员   /  发表于:2022-8-11 13:52  /   查看:1957  /  回复:0
本帖最后由 跷跷板 于 2022-8-11 13:59 编辑

树形控件,是一个展现不同数据层次或层级的控件, 但树形控件在加载时加载不出来。 数据表中总行数:12400行;
设计时是这样的(下图),                                   
image.png967491455.png
数据表的样子是这样的:  第2列是关联TimeA的ID,这里是整数。    WBSNO,UP是本层与上层的对应关系列。
因为数据都是双位数, 取长度/2 = X  , 这个X就是某树形节点的等级。 这个等级在未来查询时使用。
image.png472249755.png
测试经过:
一、   WBSNO,UP 2列无论是数值型,还是文本型,都加载不出树形数据;  主要极有可能是树形是先加载全部数据,再其基础上进行的条件过滤。
      所以在加载的时候数据量太大, 加载不出。
     为什么这么说呢, 看我第2步的验证。
二 、 做一个与  BBB结构一样的空表Shuxing( 全名:b_ProdTimeB_Shuxing),然后每次查询的时候,都重要通过SQL过程,将查询的结果插入到Shuxing中。
         再通过树型加载Shuxing表。 这样的表数据格式与(一)是一样的, 但数据量只有400多行。
         结果: 非常快
  1. ALTER proc [dbo].[Proc_b_ProdTimeB] @ProdTimeA_ID nvarchar(30)
  2. DELETE FROM  b_ProdTimeB_Shuxing
复制代码


三、 不用我的WBSNO,UP做上级的关联,直接用表的自身的ID, 因为表自身的ID关键字,效率应该更高。   
         结果:非常快
         涉及到树形的上级, 尽量用其自己的ID,这样最简单,效率最高。但其层级自动判断难。需要程序自己将全部的结构规则建好,用户只用就可以。

最终, 因为我的使用场景(要不断向上级汇总mins) ,我目前选择用第二种。 是不是第三种也行,还在校验中,有了新结果再完善此文档 。
  1. ALTER PROC [dbo].[UPDATE_WBS_SUMTIME]
  2. @AID INT
  3. AS
  4. declare @c int
  5.     set @c=5
  6.         --set @AID=8
  7.         while @c>=1
  8.         begin
  9.          update b_ProdTimeB
  10.          set StandMins=B.Smins
  11.         from b_ProdTimeB A
  12.          inner join
  13.    (
  14.        select   up,  SUM(standmins)  Smins
  15.        from b_ProdTimeB
  16.        where len(wbsno)=@c AND b_ProdTimeA_ID=@AID      ---如果这个 len(wbsno)=@c 可不用,就可以用方式三了吧。??
  17.        GROUP BY   up
  18.       ) as B on a.WBSno=b.UP
  19.          inner join b_prodtimeA C on c.ID=a.b_ProdTimeA_ID
  20.     where len(a.wbsno)=@c-1 and C.ID=@AID
  21.         SET @c-=1
  22.         end  
复制代码



评分

参与人数 1金币 +66 收起 理由
Joe.xu + 66 很给力!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部