大部分我们在刚从事后端工作时写的sql语句主要注重结果,并没有对他的执行效率进行考虑,只是单纯的完成自己手头上的任务,毕竟开发环境下表中的数据量较少,执行起来也很快,并没有察觉到自己写的sql语句的执行效率,但是在面试过程中,经常被问到sql语句如何优化的问题,下面我来介绍一下常用的sql语句优化的方式。

1.为了提高查询效率,优先原则是避免全表扫描,在where子句的列以及order by涉及的列建立索引。
如:select * from A where name =‘zhangsan’ order by id ; 在这我们可以建立一个更高效的 联合索引Index(name,id);

2.不要使用select * from table这样的语句,要用具体的列名代替“*”,避免全表扫描。

3.模糊查询时候的优化。如:
优化前:select id,name from A where name like “%张%”;这样写的话,一定会走全表扫描,效率很低;
优化后:select id,name from A where name like “张%”;

4.尽量避免在where子句中使用 != 、< 、>操作符号,不然还是走全表扫描。

5.尽量避免在where子句中使用 is null 或者 is not null 这样的,否则会进行全表扫描。我们可以在设计表字段时候给字段设置为默认值0,不要设置为NULL。

6.where子句中尽量避免使用“or”,我们可以使用union all 来替换,如果使用“or”,索引就会失效而会全表扫描。如:
优化前:select id from A where age=1 or age=2;
优化后:select id from A where age=1 union all select id from A where age=2;

7.where子句中尽量少用in 或者 not in ,不然的话,会丢弃索引进行全表扫描。我们可以 between 替换in 。如:
优化前:select id from A where age in (1,2,3);
优化后:select id from A where age between 1 and 3;

8.where 子句中尽量避免对字段进行函数操作,否则会放弃索引进行全表扫描。如:
优化前:select id from A where year(createtime) <2020;
优化后:select id from A where createtime < ‘2020-01-01’;

9.exist 代替 in 如:
优化前:select * from A where id in ( select id from B ) ;
优化后:select * from A where id exists ( select 1 from A.id= B.id );

10.使用join 来代替子查询。如:
优化前:select * from A where exists (select * from B where id>=3000 and A.id=B.id);
优化后:select * from A inner join B on A.id=B.id where b.id>=3000;

以上就是常用的sql语句优化的方法,面试时没必要完全都要说出来,只需将自己知道的说出来几种即可,大家按照自己的理解来复述以上的观点,用通俗易懂的话来叙述出来,会有更好的效果哦!

sql语句的优化方式相关推荐

  1. 52条SQL语句性能优化策略

    本文会提到 52 条 SQL 语句性能优化策略. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 WHERE 及 ORDER BY 涉及的列上建立索引. 2.应尽量避免在 WHERE 子句中对字 ...

  2. sql加上唯一索引后批量插入_阿里大佬总结的52条SQL语句性能优化策略,建议收藏...

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 cnblogs.com/SimpleWu/p/9929043.html 推荐:h ...

  3. oracle将千万行查询优化到一秒内,oracle下一条SQL语句的优化过程(比较详细)

    oracle下一条SQL语句的优化过程(比较详细) 更新时间:2010年04月14日 23:56:49   作者: 很简单的一次调整,语句加了适当的索引后性能就有大幅的提升.当时看到这条语句的时候,第 ...

  4. Oracle sql语句简单优化

    一.操作符优化: 1.IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格.但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQL与不 ...

  5. 如何对 SQL 语句进行优化

    当我们在设计一个项目时,开发阶段的业务数据量相对较少,一些 SQL 语句的执行效率对程序运行效率的影响不太明显,所以对于开发或运维人员来说不会注重对 SQL 语句的优化.但是,随着时间的积累,业务数据 ...

  6. Java面试题(十) - SQL语句的优化

    SQL语句的优化一般有以下几种方式: 一.设置合适的字段属性        (1) 例如,设置中国的电话号码是11位,varchar的长度不设置默认255,设置11位.        (2) 字段的长 ...

  7. oracle sql语句常用优化方法

    oracle sql语句常用优化方法 最近做一些报表查询,经常做一些小优化,在这里总结一下 语句上的优化: 1.SELECT 语句中避免使用*,用那些字段就摘出哪些. 2.SQL语句尽量用大写: 因为 ...

  8. 【MySQL】47 条SQL语句性能优化策略

    本文会提到 47 条 SQL 语句性能优化策略. 1. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 WHERE 及 ORDER BY 涉及的列上建立索引. 2. 应尽量避免在 WHERE 子句中 ...

  9. 52条SQL语句性能优化策略,建议收藏

    点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 每日英文 Promise yourself to be so strong ...

最新文章

  1. 入机器学习大坑,需要什么样的数学水平?
  2. 项目性能优化(MySQL读写分离、MySQL主从同步、Django实现MySQL读写分离)
  3. .Net Remoting 1
  4. c#中不同类中变量的引用方法
  5. 曳舞---1、曳舞各个动作要点
  6. linux 找出耗io的,linux根据io消耗找进程
  7. Redis 通过 RDB 方式进行数据备份与还原
  8. 23.3. DELETE
  9. 易语言版{大智慧/分析家/飞狐交易师}DLL插件接口开发模块(beta),自定义股票软件公式扩展函数...
  10. Oracle排序查询语句
  11. 2012-2013考研英语词汇
  12. 浅谈文件捆绑技术及实现方式
  13. 为什么选择浙工大计算机专业,研途生活 | 亲爱的你,当初是为什么选择浙工大...
  14. Win10 64bit 下 Oracle 11g的下载与安装+PLSQL的安装 (超级详细)
  15. Echarts -盒须图的使用说明
  16. 什么样的工作轻松又赚钱?真的有这样的工作吗?
  17. Codeforces Round #702 (Div. 3) C. Sum of Cubes
  18. 基于YOLO的人脸检测和人脸计数(课程设计)
  19. 成功解决500 : Internal Server Error问题
  20. MySQL数据库集群实战(1)——MySQL数据库基础知识

热门文章

  1. laxtex 输出度数符号
  2. Generalized Category Discovery(论文翻译)
  3. 如何使用Node.js抓取网站
  4. hub设备_颜值体验都出色,ORICO工业级多口分控HUB体验
  5. 替换单词c语言程序,C语言课程设计报告【设计简单单词替程序替换指定单词】.doc...
  6. 十四 iOS之 画板
  7. mysql创建表设置自增_mysql 创建表并设置主键自增
  8. 注册机没办法正常安装
  9. 问题生成(QG)总结
  10. Spring 整合 Mybatis 原理