求大神帮忙 求优化下SQL语句

一头想吃的猪 2014-11-24 05:19:53
select t.htId,t1.id,t2.id,t3.id ,htNo 合同编号,visitType 回访类型,success 回访状态,buy 客户姓名,buyPhone 客户电话,seller 房东姓名,sellerPhone 房东电话,storeDegree 门店评价,transferDegree 客户评价,warrantUserId 权证评价,processDate 过户日期,visitDate 回访日期,t2.`name` 录入人,t3.`name` 录入部门,flowuser 流程人,flowdept 流程部门,signuser 签约人,t1.signdept 门店,t1.dname 门店区域,houseAddress 位置,turnRefer 转介绍,t.createDate 录入日期,t.remark 备注,t4.dPhone 店长电话

from
ht_visit t LEFT JOIN (select t.id,t.htNo,t.buy,t.buyPhone,t.seller,t.sellerPhone,t.processDate,t.flowuser,t.flowdept,t.signuser,t.houseAddress,t.signdept,t1.`name` as dname FROM v_ht_info t LEFT JOIN
(select t.id,t.name,t2.p_id,t2.signdept FROM b_organs t,(select t1.id,t1.p_id,t.signdept,t1.name from v_ht_info t,b_organs t1 where t.signdept=t1.name) t2 where t.id=t2.p_id) t1 ON t.signdept=t1.`name`) t1


ON t.htId=t1.id
LEFT JOIN b_emp t2 ON t.userId =t2.id
LEFT JOIN b_organs t3 ON t.deptId =t3.id
LEFT JOIN (select t.name,t.phone as dPhone,t.name1,t.sysOrgan_id,t1.name as name2,t1.id from
(select t.name,t.phone,t1.name as name1,t.sysOrgan_id from b_emp t JOIN b_position t1 ON t.position_id = t1.id where t1.id=116 and t.status=243) t JOIN b_organs t1 ON t.sysOrgan_id = t1.id) t4 on t1.signdept =t4.name2



本人知识有限 写的太垃圾 求大神帮忙 优化下。还有一个问题我截图


一个店 出现两个店长 就会导致数据增加了同一样的记录 就只是 店长电话部一样 我现在只需要随便一个就可以了
...全文
350 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ansel-枫儿-Moe 2015-03-27
  • 打赏
  • 举报
回复
好长啊,我看着都晕~~
baidu_23174957 2014-12-01
  • 打赏
  • 举报
回复
一头想吃的猪 2014-11-26
  • 打赏
  • 举报
回复
引用 12 楼 roundman 的回复:
[quote=引用 9 楼 ren2010jx 的回复:] 其实 就是 要求 简化SQL语句 提高效率
你一共才3,4张表,子查询一环套一环的。。阅读起来实在是吃力啊。 还不如直接把业务需求告诉大家,直接重写sql……[/quote] 业务需求就是那个两个图啊
一头想吃的猪 2014-11-25
  • 打赏
  • 举报
回复
select t.deptId,t.userId,t.htId,t1.id,t2.id,t3.id,htNo 合同编号,visitType 回访类型,success 回访状态,buy 客户姓名,buyPhone 客户电话,seller 房东姓名,sellerPhone 房东电话,storeDegree 门店评价,transferDegree 客户评价,warrantUserId 权证评价,processDate 过户日期,visitDate 回访日期,t2.`name` 录入人,t3.`name` 录入部门,flowuser 流程人,flowdept 流程部门,signuser 签约人,t1.signdept 门店,t1.dname 门店区域,houseAddress 位置,turnRefer 转介绍,t.createDate 录入日期,t.remark 备注,t1.dPhone 店长电话
from
ht_visit t LEFT JOIN (select

t.id,t.htNo,t.buy,t.buyPhone,t.seller,t.sellerPhone,t.processDate,t.flowuser,t.flowdept,t.signuser,t

.houseAddress,t.signdept,t1.`name` as dname,t2.dPhone FROM v_ht_info t LEFT JOIN
(select t.signdept,t.p_id,t1.id,t1.`name` FROM (select t.signdept,t1.name,t1.id,t1.p_id from

v_ht_info t LEFT JOIN b_organs t1 ON t.signdept =t1.`name`) t LEFT JOIN b_organs t1 ON t.p_id=t1.id)

t1 ON t.signdept =t1.signdept
LEFT JOIN
(select t.name,t.phone as dPhone,t.name1,t.sysOrgan_id,t1.name as

name2,t1.id from
(select t.name,t.phone,t1.name as name1,t.sysOrgan_id from b_emp t JOIN b_position t1 ON

t.position_id = t1.id where t1.id=116 and t.status=243) t JOIN b_organs t1 ON t.sysOrgan_id = t1.id

GROUP BY t1.id ) t2 ON t.signdept =t2.name2 GROUP BY htNo) t1 ON t.htId = t1.id
LEFT JOIN b_emp t2 ON t.userId =t2.id
LEFT JOIN b_organs t3 ON t.deptId =t3.id



完整代码 效果 我贴图


现在就两个条数据 花了4S的时间 效率太低了 求帮忙优化
一头想吃的猪 2014-11-25
  • 打赏
  • 举报
回复
引用 8 楼 ACMAIN_CHM 的回复:
[quote=引用 2 楼 ren2010jx 的回复:] [quote=引用 1 楼 ACMAIN_CHM 的回复:] 贴出 explain select .. 及 show index from .. 以供分析。
不懂……[/quote]没关系,可以先百度一下。[/quote] 能否加下你QQ 私聊下呢?
一头想吃的猪 2014-11-25
  • 打赏
  • 举报
回复
引用 7 楼 roundman 的回复:
能不能把几张表的结构和说明,以及希望的结果发出来? 光给句sql都搞不明白你要干点什么……
其实 就是 要求 简化SQL语句 提高效率
ACMAIN_CHM 2014-11-25
  • 打赏
  • 举报
回复
引用 2 楼 ren2010jx 的回复:
[quote=引用 1 楼 ACMAIN_CHM 的回复:] 贴出 explain select .. 及 show index from .. 以供分析。
不懂……[/quote]没关系,可以先百度一下。
roundman 2014-11-25
  • 打赏
  • 举报
回复
能不能把几张表的结构和说明,以及希望的结果发出来? 光给句sql都搞不明白你要干点什么……
一头想吃的猪 2014-11-25
  • 打赏
  • 举报
回复
select t.htId,t1.id,t2.id,t3.id ,htNo 合同编号,visitType 回访类型,success 回访状态,buy 客户姓名,buyPhone 客户电话,seller 房东姓名,sellerPhone 房东电话,storeDegree 门店评价,transferDegree 客户评价,warrantUserId 权证评价,processDate 过户日期,visitDate 回访日期,t2.`name` 录入人,t3.`name` 录入部门,flowuser 流程人,flowdept 流程部门,signuser 签约人,t1.signdept 门店,t1.dname 门店区域,houseAddress 位置,turnRefer 转介绍,t.createDate 录入日期,t.remark 备注,t4.dPhone 店长电话

from 
 ht_visit t LEFT JOIN (select t.id,t.htNo,t.buy,t.buyPhone,t.seller,t.sellerPhone,t.processDate,t.flowuser,t.flowdept,t.signuser,t.houseAddress,t.signdept,t1.`name` as dname FROM v_ht_info t LEFT JOIN 
     (select t.signdept,t.p_id,t1.id,t1.`name` FROM (select t.signdept,t1.name,t1.id,t1.p_id from  v_ht_info t LEFT JOIN b_organs t1 ON t.signdept =t1.`name`) t LEFT JOIN b_organs t1 ON t.p_id=t1.id)  t1 ON t.signdept =t1.signdept ) t1
     LEFT JOIN b_emp t2 ON t.userId =t2.id
     LEFT JOIN b_organs t3 ON t.deptId =t3.id
     LEFT JOIN (select t.name,t.phone as dPhone,t.name1,t.sysOrgan_id,t1.name as name2,t1.id from
 (select t.name,t.phone,t1.name as name1,t.sysOrgan_id from b_emp t JOIN b_position t1 ON  t.position_id = t1.id where t1.id=116 and t.status=243) t JOIN b_organs t1 ON t.sysOrgan_id = t1.id GROUP BY t1.id ) t4 on t1.signdept =t4.name2
这个语句 老报错,不知道什么情况 请大神帮忙看看
一头想吃的猪 2014-11-25
  • 打赏
  • 举报
回复
此语句有问题 昨天没注意到 今天改了下 不过报错 蛋疼中
一头想吃的猪 2014-11-25
  • 打赏
  • 举报
回复
引用 3 楼 zy205817 的回复:
group by 分组去重
去重已经决解了 现在是怎么写效率好的问题了
码无边 2014-11-25
  • 打赏
  • 举报
回复
group by 分组去重
一头想吃的猪 2014-11-25
  • 打赏
  • 举报
回复
引用 1 楼 ACMAIN_CHM 的回复:
贴出 explain select .. 及 show index from .. 以供分析。
不懂……
roundman 2014-11-25
  • 打赏
  • 举报
回复
引用 9 楼 ren2010jx 的回复:
其实 就是 要求 简化SQL语句 提高效率
你一共才3,4张表,子查询一环套一环的。。阅读起来实在是吃力啊。 还不如直接把业务需求告诉大家,直接重写sql……
ACMAIN_CHM 2014-11-24
  • 打赏
  • 举报
回复
贴出 explain select .. 及 show index from .. 以供分析。

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧