关于数据库优化问题

按登陆用户名,判断门店和楼层权限。基础表jhyb_user,先判断门店MD,再按门店判断楼层louceng功能已实现。

目前的问题是因为有多店,一个店有多个楼层。等于一个用户,基础表差不多有30行。有几百个用户,用户多了,查询的时候明显慢了。这怎么能优化,速度快一些。感觉就IN效率比较低。

where 1=1 ${if( len(fine_username)== 0  , "",  "and md in (select md from jhyb_user where name = '"+fine_username+"'  ) and louceng in (select louceng from jhyb_user where mdmc='"+门店+"'  and name = '"+fine_username+"'  )"  )}

微信图片_20221208135610.png

(用户表,一个人一个店有6 行,有5家店权限就要30行,有200左右用户)

SQL ysbin 发布于 2022-12-8 13:52 (编辑于 2022-12-8 13:58)
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
CD20160914Lv8专家互助
发布于2022-12-8 14:02(编辑于 2022-12-8 14:03)

你这什么数据库。。。200*6*5=6000行数据,这才多少点数据?这么点数据。。用mysql就算全部in进去也不会慢。电脑配置太低难道??【我也维护了一个权限表里面就按人来的。每个N条数据。里面总共7万多行。也没有说有什么慢的。秒出结果】

  • ysbin ysbin(提问者) SQL 2019,我不按权限控制秒开,加了要1 2秒。
    2022-12-08 14:14 
  • CD20160914 CD20160914 回复 ysbin(提问者) 你把对应的md字段加上索引吧。。louceng也加上。还有要不使用表关联吧。。join去取。。
    2022-12-08 14:18 
  • CD20160914 CD20160914 回复 ysbin(提问者) sql server也不应该对几千行数据还慢。。我查sql server 几百万数据中用in也不慢。。
    2022-12-08 14:19 
  • ysbin ysbin(提问者) 回复 CD20160914 好的,感谢
    2022-12-08 14:42 
最佳回答
0
lxy2Lv6中级互助
发布于2022-12-8 13:56

换成用exists呢

  • 3关注人数
  • 242浏览人数
  • 最后回答于:2022-12-8 14:03
    请选择关闭问题的原因
    确定 取消
    返回顶部