where一对多映射并联,导致查询数据结果条目太多,还有什么语句能提高运行效率?

表1是 学生个人信息,包括ID ,NAME等字段

表2是 学生服装信息,包括与表1关联的ID,本身的ID_fuzhuang两个字段

表3是 服装信息,包括与表2关联的ID_fuzhuang,和具体服装名称 FZ_NAME字段(比如帽子、手套、上衣)

现在要查询学生张三有几个服装,可能是帽子、手套

学生李四有 几个衣服,可能仅仅是手套。

我目前是写成

select 表1.NAME, 表3.FZ_NAME from 表1,表2,表3 where 表1.ID=表2.ID and 表2.ID_fuzhuang=表3.ID_fuzhuang and 表1.ID=表2.ID

但是因为学生太多,并且是一个人可能有多个服装映射,所以总数太大,把

【fr决策平台限制去掉,但是页面加载太慢】

其实我就是想让张三、李四等学生详细页面内,展现一下他们所订购的衣服,有没有不用where并列的方法?

superman21 发布于 2021-7-28 12:15
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
给我一瓶乳酸菌Lv4见习互助
发布于2021-7-28 13:22(编辑于 2021-7-28 13:26)

使用where查询会差生这三张表的笛卡尔积,如果三张表数据分别为10条,那就会产生10*10*10条数据,然后再会根据where条件去判断符合条件的列,如果数据量不是特别大,那要做的就是消除笛卡尔积就好了,我这里给你写了一下左关联,你试一下,应该会少很多时间。

select 表1.NAME, 表3.FZ_NAME from

 表1 left join 表2 on  表1.ID=表2.ID

left join 表3 on 表2.ID_fuzhuang=表3.ID_fuzhuang

达到效果了给我点个采纳

  • superman21 superman21(提问者) 我用where和你说的left join 比对了一下 ,运行都是0.014s,7310行,差距不明显; 不过我通过 过滤+传参数的方式,实现了想要的功能 谢谢
    2021-07-28 19:39 
  • 给我一瓶乳酸菌 给我一瓶乳酸菌 回复 superman21(提问者) 好的,能实现需求就好。
    2021-07-29 09:44 
最佳回答
0
snrtuemcLv8专家互助
发布于2021-7-28 12:20

用left join关联试试

最佳回答
0
yalinLv6中级互助
发布于2021-7-28 12:22(编辑于 2021-7-28 13:53)

~~~~~~~~

  • 4关注人数
  • 253浏览人数
  • 最后回答于:2021-7-28 13:53
    请选择关闭问题的原因
    确定 取消
    返回顶部