使用ToChildList查询子集数据时,性能低下,怎么解决 返回
执行查询语句
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)
-
fate sta VIP02周前
升级sqlsugar,这个性能不会低下的。
0 回复 -
fate sta VIP02周前
内存中只会比数据库快
0 回复 -
fate sta VIP02周前
如果你层级不多,可以用导航查询实现树,但是这个有层级的
0 回复 -
打到反动派 VIP02周前
有没有官方的大佬解释下,为什么要把整表数据取出来,目前我临时改成了手写的sql了,
这样的orm 没法用啊
0 回复 -
打到反动派 VIP02周前
@fate sta:主要是取整表数据,高并发时,数据都进不了内存
0 回复 -
打到反动派 VIP02周前
系统会全部卡死
0 回复 -
fate sta VIP02周前
@打到反动派:
1、内存模式 就是totree和child 如果比较大一般表比较大一般结合 二级缓存使用。
2、数据库模式 用导航来实现树,这个层级有限一般适合7层之内的
0 回复