使用ToChildList查询子集数据时,性能低下,怎么解决 返回

SqlSugar 沟通中
7 149

执行查询语句

var allSubIds = db.Queryable<pg_system_menu>()

    .ToChildList(it => it.parentid, viewModel.id).Select(x=>x.id);

数据输出正常


查看输入的sql语句显示

SELECT `id`,`name`,`parentid`,`parentidstr`,`sort`,`permission`,`enabled`,`typeid`,`icon`,`level`,`path`,`page`,`menutype`,`hidden`,`addtime` FROM `pg_system_menu`

查询了整表的数据,然后在内存中进行递归筛查

这对大表来说,无疑是灾难。

不知道是不是我哪里使用错了

热忱回答7

  • 升级sqlsugar,这个性能不会低下的。

    0 回复
  • 内存中只会比数据库快

    0 回复
  • 如果你层级不多,可以用导航查询实现树,但是这个有层级的

    0 回复
  • 有没有官方的大佬解释下,为什么要把整表数据取出来,目前我临时改成了手写的sql了,

    这样的orm  没法用啊


    0 回复
  • @fate sta:主要是取整表数据,高并发时,数据都进不了内存

    0 回复
  • 系统会全部卡死

    0 回复
  • @打到反动派

    1、内存模式 就是totree和child 如果比较大一般表比较大一般结合 二级缓存使用。 

    2、数据库模式  用导航来实现树,这个层级有限一般适合7层之内的

    0 回复