昨天帮同事优化了一个sql语句发出来共勉下:

SELECT
T.*,
(
SELECT
S.codeName
FROM
sys_codelist S
WHERE
S.codeValue = T.packagingtype
AND S.kindCode = 'PACKAGING'
) AS packagingtypeName,
S.codeName AS codename,
(
SELECT
picpath
FROM
zl_b_gd_pic
WHERE
1 = 1
AND gdid = T.gdid
LIMIT 0,
1
) AS gdmainimagepath
FROM
zl_b_gd T
LEFT JOIN sys_codelist S ON S.codeValue = T.levelcode
WHERE
1 = 1
AND T.gdmode <> '3'
AND TO_DAYS(T.invaliddate) > TO_DAYS(NOW())
AND T.gdstatus = '2'
AND gdtype = '2'
ORDER BY
STR_TO_DATE(
gdpublishdate,
'%Y-%m-%d %H:%i:%s'
) DESC

主表1600条数据,codelist表4000+数据,当前查询时间为2.33s.

SELECT
T.*,
PG.CODENAME AS packagingtypeName,
S.codeName AS codename,
(
SELECT
picpath
FROM
zl_b_gd_pic
WHERE
1 = 1
AND gdid = T.gdid
LIMIT 0,
1
) AS gdmainimagepath
FROM
zl_b_gd T
LEFT JOIN (SELECT * FROM sys_codelist WHERE KINDCODE='CORN_LEVEL') S ON T.levelcode = S.codeValue
LEFT JOIN (SELECT * FROM sys_codelist WHERE kindCode = 'PACKAGING') PG ON T.packagingtype = PG.codeValue
WHERE
1 = 1
AND T.gdmode <> '3'
AND TO_DAYS(T.invaliddate) > TO_DAYS(NOW())
AND T.gdstatus = '2'
AND gdtype = '2'
ORDER BY
STR_TO_DATE(
gdpublishdate,
'%Y-%m-%d %H:%i:%s'
) DESC

子查询换成了关联查询,查询时间为0.54s.

执行计划如下:

执行计划部分我说的不是很清晰,有可以描述清晰朋友可以帮忙解释下.

转载于:https://www.cnblogs.com/zhouy-77253569/p/9566648.html

mysql数据库sql语句优化相关推荐

  1. MySQL数据库---SQL语句优化及性能优化

    文章目录 mysql的架构图 mysql的执行过程 sql语句执行计划 索引失效的情况 mysql性能调优: 分库分表 读写分离---主从复制 mysql的架构图 大致分为4层:连接层.服务层.引擎层 ...

  2. MySQL数据库SQL层级优化

    MySQL数据库SQL层级优化 本篇主涉及MySQL SQL Statements层面的优化. 首先,推荐一个链接为万物之始:http://dev.mysql.com/doc/refman/5.0/e ...

  3. php面试专题---MySQL常用SQL语句优化

    php面试专题---MySQL常用SQL语句优化 一.总结 一句话总结: 原理,万变不离其宗:其实SQL语句优化的过程中,无非就是对mysql的执行计划理解,以及B+树索引的理解,其实只要我们理解执行 ...

  4. mysql常用sql语句优化

    转载自:http://www.cnblogs.com/gomysql/p/3632209.html 在数据库日常维护中,最常做的事情就是SQL语句优化,因为这个才是影响性能的最主要因素.当然还有其他方 ...

  5. mysql sql优化_MySQL数据库SQL语句优化原理专题(三)

    需求 做过开发的同学,对分页肯定不会陌生,因为很多前台页面展示,为了更好的展示数据,就会用到分页,所以如何写一个高性能的分页SQL语句,是每一个开发人员需要掌握的技能. 分页SQL 这里给大家写一个分 ...

  6. 数据库 sql 语句优化

    目录 1.查询 SQL 尽量不要使用 select *,而是 select 具体字段 2.如果知道查询结果只有一条或者只要最大/最小一条记录,建议用 limit 1 3.应尽量避免在 where 子句 ...

  7. Mysql数据库Sql语句执行效率-Explain

    为什么80%的码农都做不了架构师?>>>    Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语 ...

  8. mysql之sql语句优化

    这篇文章从15个方面,分享了sql优化的一些小技巧,希望对你有所帮助. 1 避免使用select * 很多时候,我们写sql语句时,为了方便,喜欢直接使用select *,一次性查出表中所有列的数据. ...

  9. mySQL数据库Sql语句执行效率检查--Explain命令

    Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优 ...

最新文章

  1. win10 linux子系统
  2. 修改framework后重新刷入手机
  3. Web开发-Django视图层
  4. Eclipse - CDT使用GDB调试C++的问题-无源文件命名(No source file named)
  5. 信通院 DevOps 新标准评估结果发布:腾讯获评唯一卓越级
  6. 02 - 体系结构概述
  7. Laravel 使用firstOrCreate 报错MassAssignmentException
  8. Atitit 源码语句解析结构 目录 1.1. 栈帧(stack frame).每个独立的栈帧一般包括: 1 1.2. 局部变量表(Local Variable Table) 2 2. ref 2
  9. Java基础枚举(enum关键字)
  10. MATLAB---画三角函数图像
  11. AM335x TP驱动解析
  12. burst传输 - 理解
  13. Codeforces 1006A
  14. JavaScript 中的事件类型3(读书笔记思维导图)
  15. 如何在计算机桌面上添加小工具,怎么在电脑的桌面小工具里添加便签
  16. VS2015未定义标识符gets
  17. **数据堂荣登2018中国最具商业价值AI企业百强榜单**
  18. 泛微oa 控制行显示、隐藏
  19. 一起来学lua脚本第一节
  20. 吴恩达机器学习笔记整理(Week6-Week11)

热门文章

  1. 5.报错:ImportError: No module named win32api
  2. 遍历List过程中同时修改
  3. python多分支结构实例_JS优化多分支结构(经典)
  4. matlab 大括号
  5. [C++]在Visual Studio 2010中使用Google Test - 配置
  6. mysql 匿名块_MySQL存储过程定义中的特性(characteristic)的含义
  7. Matlab optimtool优化(Optimization)工具箱
  8. Matlab矩阵替换所有等于某个值的数
  9. MATLAB读写mat文件
  10. 一杯水怎么测试_一杯水就能鉴别翡翠真假的高招