数据库优化专题—1、表的主键用数字还是UUID
数据库优化专题—2、逻辑删除还是物理删除
数据库优化专题—3、千万记录如何快速分页
数据库优化专题—4、读多写少和读多写多
数据库优化专题—5、删改数据如何避免锁表
数据库优化专题—6、如何避免偷换交易中的商品信息
数据库优化专题—7、SQL语句优化
数据库优化专题—8、Mysql参数优化
数据库优化专题—9、索引优化
数据库优化专题—10、存储优化
数据库优化专题—11、数据库结构优化

目录

  • 优化SQL语句(一)
  • 优化SQL语句(二)
  • 优化SQL语句(三)
  • 优化SQL语句(四)
  • 优化SQL语句(五)
  • 总结

这节主要讲解一些SQL优化方式。

优化SQL语句(一)

  • 不要把SELECT子句写成SELECT *;
SELECT * FROM t_emp;//数据库执行,1、查询表结构 2、换字段 3、再执行
  • 谨慎使用模糊查询;
SELECT name FROM t_emp WHERE name LIKE '%S%';//不走索引,全表扫描
SELECT name FROM t_emp WHERE name LIKE 'S%';//走索引

优化SQL语句(二)

  • 对ORDER BY排序的字段设置索引;
SELECT name FROM t_emp ORDER BY deptno;
  • 少用IS NULL和IS NOT NULL;
SELECT name FROM t_emp WHERE comm IS NOT NULL;//不走索引
SELECT name FROM t_emp WHERE comm >=0;//走索引,设置非空为大于0值
SELECT name FROM t_emp WHERE comm =-1;//走索引,设置非空为-1值

优化SQL语句(三)

  • 尽量少用 != 运算符;
SELECT name FROM t_emp WHERE deptno !=20;//不走索引,全表扫描
SELECT name FROM t_emp WHERE deptno <20 AND deptno>20;//走索引
  • 尽量少用OR运算符;
    注: OR之前表达式走索引,之后不走索引;
SELECT name FROM t_emp WHERE deptno=20 OR deptno=30;//deptno=20走索引,deptno=30不走索引
SELECT name FROM t_emp WHERE deptno=20
UNION ALL
SELECT name FROM t_emp WHERE deptno=30;//走索引

优化SQL语句(四)

  • 尽量少用IN和NOT IN运算符;
    注: 在 5.5 之后的版本,MySQL 做了优化。MySQL 在 2010 年发布 5.5 版本中,优化器对 in 操作符可以自动完成优化,针对建立了索引的列可以使用索引,没有索引的列还是会走全表扫描;
SELECT name FROM t_emp WHERE deptno=20 OR deptno=30;//deptno=20走索引,deptno=30不走索引
SELECT name FROM t_emp WHERE deptno=20
UNION ALL
SELECT name FROM t_emp WHERE deptno=30;//走索引
  • 避免条件语句中的数据类型转换;
SELECT name FROM t_emp WHERE deptno='20';//数据库先转换数据类型再比较,效率低

优化SQL语句(五)

  • 在表达式左侧使用运算符和函数都会让索引失效;
SELECT name FROM t_emp WHERE salary*12>=100000;//不走索引
SELECT name FROM t_emp WHERE salary>=100000/12;//走索引
SELECT name FROM t_emp WHERE year(hiredate)>=2000;//不走索引
SELECT name FROM t_emp WHERE hiredate>='2020-01-01 00:00:00';//走索引

总结

优化SQL语句,主要是如何走索引查询,减少数据库计算等。

数据库优化专题---7、SQL语句优化相关推荐

  1. 优化数据库的方法及SQL语句优化的原则

    优化数据库的方法: 1.关键字段建立索引. 2.使用存储过程,它使SQL变得更加灵活和高效. 3.备份数据库和清除垃圾数据. 4.SQL语句语法的优化.(可以用Sybase的SQL Expert,可惜 ...

  2. 优化数据库的思想及SQL语句优化的原则

    优化数据库的思想: ================ 1.关键字段建立索引. 2.使用存储过程,它使SQL变得更加灵活和高效. 3.备份数据库和清除垃圾数据. 4.SQL语句语法的优化.(可以用Syb ...

  3. MySQL优化之三:SQL语句优化

    一 SQL语句优化的一般步骤: 1 通过show status命令了解各种SQL语句的执行频率 mysql> show status;                #show status:显 ...

  4. Mysql删除语句优化_MySQL性能优化之常用SQL语句优化

    SQL性能优化的目标:至少要达到range级别,要求是ref级别,consts最高.[阿里巴巴JAVA开发手册] 说明: 1).consts单表中最多只有一个匹配行(主键/唯一索引),在优化阶段即可读 ...

  5. sql查询索引语句_sql优化总结--基于sql语句优化和索引优化

    概述 最近做查询,统计和汇总.由于数据量比较庞大,大部分表数据上百万,甚至有的表数据上千万.所以在系统中做sql优化比较多,特此写一篇文章总结一下关于sql优化方面的经验. 导致查询缓慢的原因 1.数 ...

  6. 数据库:30种SQL语句优化,进阶必备!

    SQL查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结一些方法,供大家参考. 01 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by ...

  7. Sql优化一:sql语句优化

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  8. SQL优化SQL语句优化的目的

    sql的优化,要看优化什么,性能,效率,稳定性,安全性?每个方面都有很大的不同. 内容参见:https://blog.csdn.net/sinat_37464123/article/details/8 ...

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

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

最新文章

  1. iOS9基础知识(OC)笔记
  2. RichTextBox中表格不能折行的问题
  3. RTX3090深度学习环境配置(PyTorch1.8)
  4. TCP socket心跳包示例程序
  5. 计算机网络作业6,计算机网络作业 6
  6. 电视盒安装php,全志a20安卓电视盒子安装可道云kodexplorer服务-编译安装php7.3+nginx...
  7. 数据分析应用统计学之分散性与变异性的测量【极差、四分位差、偏态系数、峰态系数、统计指标】
  8. php get获取腾讯视频vid,获取腾讯视频源地址链接的方法
  9. mysql存储过程核销_mysql存储过程
  10. 【MySQL】mysql死锁以及死锁日志分析
  11. 弱电系统集成(收集)
  12. Android thumbnail 图片的获得及与原始图片的映射
  13. Struts2之checkboxlist 设置默认值和结果回显
  14. java.lang.NoClassDefFoundError: Ljavax/transaction/TransactionManager
  15. 大型央企云边协同建设方案及其借鉴意义分析
  16. 苹果27寸一体机拆机图解_21.5/27寸新iMac完全拆解:维修要你命
  17. 智者务其实,愚者争虚名
  18. 设置WDS桥接成功,上不了网怎么办?路由器WDS无线桥接设置正确方法
  19. AntV G2 Tooltip
  20. java创建pdf空白页_使用itext将html转成PDF,PDF空白的问题。

热门文章

  1. novnc服务器搭建
  2. React——context越级传值
  3. 剑网三的哪个服务器是最新的,横向对比剑网3怀旧服有多良心?这三点区别你要知道!...
  4. 被带偏的智能家居,如何才能“逃出生天”
  5. 保险行业 会计科目分类
  6. Pintos Project1:Thread 实验报告
  7. Java实现实现语音播报功能
  8. spring定时任务 cron的含义
  9. 一张证件照2元?python一个免费的
  10. 京东众筹双色球中奖号计算方法