MICUU
微资讯
声卡
创新2024全套教程
5.1声卡全套
创新声卡驱动
板载声卡调试全套教程
Sam机架安装
Sam机架
音效助手
专题
文档
技术文档汇总
站内文档
更多
软件
更新日志
关于
装机必备
Gramos模板
光年后台模板
Betube模板
美图
友情链接
站内导航
关于
搜索
退出登录
登录
原创
mysql优化篇-初步了解和学习
2022-02-08
64.03w热度
  场景:由于数据量过大,查询20000条数据进行导出,在命令行运行,等待了1天后都没有运行完成,经过分析并得出结论,这里有部分sql运行起来太慢了,需要优化。 ``` SELECT 工单ID, 服务部, 大区, 区域, 服务店代码 , 服务店名称, 服务店简称, 省份, 城市, 顾客姓名 , 顾客电话, 顾客地址, 送修人, 送修人电话, 服务顾问 , 维修技师, 工单号, 工单类型, 维修类型, VIN , 发动机号, 车牌号, 三包性质, 车系, 车型 , 是否是便捷店维修, 便捷店名称, 购车日期, 车辆颜色, 车辆用途 , 车辆进厂里程, 送修问题, 检查结果, 进厂电里程, 换表总里程 , 换表电里程, 开单日期, 第一次结算日期, 最后结算日期, 结算金额 , 含特殊件或预定件, 3DC电访时间, 卡券号, 短信推送状态, 短信推送时间 , 微信推送状态, 微信推送时间, 问卷是否填写, 问卷填写时间, 是否匿名 , GROUP_CONCAT(q0 SEPARATOR '') AS "请您回顾您本次进店的服务体验,您对{}所提供服务的总体评价是:", GROUP_CONCAT(q1 SEPARATOR '') AS "您到店后,服务人员是否及时高效地接待您?" , GROUP_CONCAT(q2 SEPARATOR '') AS "维修等待期间,服务人员是否向您通报维修进度?", GROUP_CONCAT(q3 SEPARATOR '') AS "您认为服务店的环境是否整洁舒适?" , GROUP_CONCAT(q4 SEPARATOR '') AS "您认为接待您的服务顾问是否专业、热情友好?", GROUP_CONCAT(q5 SEPARATOR '') AS "您认为维修您爱车的维修技师是否专业、热情友好?" , GROUP_CONCAT(q6 SEPARATOR '') AS "您认为本次保养花费的时间是否合理?", GROUP_CONCAT(q7 SEPARATOR '') AS "服务人员是否向您解释清楚本次维修项目及费用?" , GROUP_CONCAT(q8 SEPARATOR '') AS "离店时,服务人员是否及时高效地协助您完成费用结算并向您交付车辆?", GROUP_CONCAT(q9 SEPARATOR '') AS "从进店到离店整个过程中,您觉得服务店的服务是否有让您印象深刻或者感动的部分?" , GROUP_CONCAT(q10 SEPARATOR '') AS "为了将来给您和其他车主提供更高质量的服务,我们真诚的期待您能对我们的服务提出宝贵意见或建议:" FROM ( SELECT sm.id AS '工单ID', sm.service_dep AS '服务部', sm.pergana AS '大区', sm.zone AS '区域', sm.dealer_code AS '服务店代码' , sm.dealer_name AS '服务店名称', sm.dealer_jname AS '服务店简称', sm.province AS '省份', sm.city AS '城市', sm.`name` AS '顾客姓名' , sm.phone AS '顾客电话', sm.location AS '顾客地址', sm.sname AS '送修人', sm.sphone AS '送修人电话', sm.service_con AS '服务顾问' , sm.chief_tec AS '维修技师', sm.job_num AS '工单号', sm.job_type AS '工单类型', sm.type AS '维修类型', sm.vin AS 'VIN' , sm.engine_no AS '发动机号', sm.car_no AS '车牌号', sm.three_type AS '三包性质', sm.car_series AS '车系', sm.car_type AS '车型' , sm.is_simple AS '是否是便捷店维修', sm.simple_name AS '便捷店名称', sm.buy_time AS '购车日期', sm.car_color AS '车辆颜色', sm.car_use AS '车辆用途' , sm.vehicle_mileage AS '车辆进厂里程', sm.problem AS '送修问题', sm.check_result AS '检查结果', sm.vehicle_elect_mileage AS '进厂电里程', sm.all_mileage AS '换表总里程' , sm.elect_all_mileage AS '换表电里程', sm.job_time AS '开单日期', sm.start_settlement_date AS '第一次结算日期', sm.settlement_date AS '最后结算日期', sm.settlement_fee AS '结算金额' , sm.special_desc AS '含特殊件或预定件', sm.threeDC_time AS '3DC电访时间', sm.`code` AS '卡券号' , CASE qm.sms_push WHEN '1' THEN '推送成功' WHEN '2' THEN '推送失败' ELSE '未推送' END AS '短信推送状态', qm.sms_push_time AS '短信推送时间' , CASE qm.wechat_push WHEN '1' THEN '推送成功' WHEN '2' THEN '推送失败' ELSE '未推送' END AS '微信推送状态', qm.wechat_push_time AS '微信推送时间' , IF(qm.reply_time > 0, '是', '否') AS '问卷是否填写' , IF(qm.reply_time > 0, FROM_UNIXTIME(qm.reply_time), '') AS '问卷填写时间' , IF(qm.anonymous = 1, '是', '否') AS '是否匿名' , CASE q.title WHEN '请您回顾您本次进店的服务体验,您对{}所提供服务的总体评价是:' THEN CONCAT_WS(' ', o.content, r.content) ELSE '' END AS q0 , CASE q.title WHEN '您到店后,服务人员是否及时高效地接待您?' THEN CONCAT_WS(' ', o.content, r.content) ELSE '' END AS q1 , CASE q.title WHEN '维修等待期间,服务人员是否向您通报维修进度?' THEN CONCAT_WS(' ', o.content, r.content) ELSE '' END AS q2 , CASE q.title WHEN '您认为服务店的环境是否整洁舒适?' THEN CONCAT_WS(' ', o.content, r.content) ELSE '' END AS q3 , CASE q.title WHEN '您认为接待您的服务顾问是否专业、热情友好?' THEN CONCAT_WS(' ', o.content, r.content) ELSE '' END AS q4 , CASE q.title WHEN '您认为维修您爱车的维修技师是否专业、热情友好?' THEN CONCAT_WS(' ', o.content, r.content) ELSE '' END AS q5 , CASE q.title WHEN '您认为本次保养花费的时间是否合理?' THEN CONCAT_WS(' ', o.content, r.content) ELSE '' END AS q6 , CASE q.title WHEN '服务人员是否向您解释清楚本次维修项目及费用?' THEN CONCAT_WS(' ', o.content, r.content) ELSE '' END AS q7 , CASE q.title WHEN '离店时,服务人员是否及时高效地协助您完成费用结算并向您交付车辆?' THEN CONCAT_WS(' ', o.content, r.content) ELSE '' END AS q8 , CASE q.title WHEN '从进店到离店整个过程中,您觉得服务店的服务是否有让您印象深刻或者感动的部分?' THEN CONCAT_WS(' ', o.content, r.content) ELSE '' END AS q9 , CASE q.title WHEN '为了将来给您和其他车主提供更高质量的服务,我们真诚的期待您能对我们的服务提出宝贵意见或建议:' THEN CONCAT_WS(' ', o.content, r.content) ELSE '' END AS q10 FROM csi_survey_members sm LEFT JOIN ( SELECT id, sms_push, wechat_push, sessionid, job_num , sms_push_time, wechat_push_time, questionnaire_id, reply_time, anonymous FROM csi_questionnaire_member ) qm ON sm.job_num = qm.job_num LEFT JOIN ( SELECT id, sessionid, create_time, content, question_id , questionnaire_id, option_id FROM csi_reply ) r ON qm.sessionid = r.sessionid LEFT JOIN csi_questions q ON r.question_id = q.id LEFT JOIN csi_options o ON r.option_id = o.id WHERE sm.type = '常规保养' AND qm.sms_push = 1 AND qm.anonymous = '2' AND qm.reply_time > 0 AND sm.type = '常规保养' ORDER BY sm.id ASC ) t GROUP BY t.`工单ID` LIMIT 0, 10000 ``` 大致运行的sql如上,可见其复杂性,并且使用了大量的子查询和leftjoin,导致部分索引用不上。 我们在sql前加 explain 进行分析 [![](http://micuer.com/data/avatar/20220208/97342f389ecc04d5b2f055030e942076.png)](http://micuer.com/data/avatar/20220208/97342f389ecc04d5b2f055030e942076.png) 可见红框处基本上都没有用上索引,这线上数据可是几百万条,查都猴年马月了啊,目前这里没有数据库权限,无法修改索引及进行表的复制,主要是要记住,可以使用explain分析sql。 参考资料: 线上SQL优化 https://www.cnblogs.com/xuanzhi201111/p/4531988.html MySQL Explain详解 https://www.cnblogs.com/tufujie/p/9413852.html 大家有空可以学习一下上述的2篇文章,有帮助。这里就不搬运内容了,希望数据会一直存在。
注:原创不易,转载请注明出处(
https://micuu.com/new/2524.html
),本站所有资源来源于网络收集,如有侵权请联系QQ245557979进行清除。
最后修改与 2022-02-22
上一篇:
感觉百度站长中索引量是需要自己登陆百度站
下一篇:
centos安装redis客户端、Linux安装redis客户端、Linux链接redis
留言反馈
请先登录
问题反馈渠道,如有软件无法下载或者其他问题可反馈。【由于某种原因,目前留言不展示】
用户需要登录后才能留言反馈
立即留言
珍藏视频
10分钟高效燃脂
30天高效瘦脸操
5分钟缓解颈椎操
友人
微博
全民K歌
唱吧
今日头条
悠悠网
科技小锅盖
彼岸桌面
阮一峰
laravel社区
V2ex
掘金
更多>