2019独角兽企业重金招聘Python工程师标准>>>

1、避免在where子句中使用 is null 或 is not null 对字段进行判断。
如:

select id from table where name is null

在这个查询中,就算我们为 name 字段设置了索引,查询分析器也不会使用,因此查询效率底下。为了避免这样的查询,在数据库设计的时候,尽量将可能会出现 null 值的字段设置默认值,这里如果我们将 name 字段的默认值设置为0,那么我们就可以这样查询:

select id from table where name = 0

2、避免在 where 子句中使用 != 或 <> 操作符。
如:

select name from table where id <> 0

数据库在查询时,对 != 或 <> 操作符不会使用索引,而对于 < 、 <= 、 = 、 > 、 >= 、 BETWEEN AND,数据库才会使用索引。因此对于上面的查询,正确写法应该是:

select name from table where id < 0
union all
select name from table where id > 0

这里我们为什么没有使用 or 来链接 where 后的两个条件呢?这就是我们下面要说的第3个优化技巧。
3、避免在 where 子句中使用 or来链接条件。
如:

select id from tabel where name = 'UncleToo' or name = 'PHP'

这种情况,我们可以这样写:

select id from tabel where name = 'UncleToo'
union all
select id from tabel where name = 'PHP'

4、少用 in 或 not in。
虽然对于 in 的条件会使用索引,不会全表扫描,但是在某些特定的情况,使用其他方法也许效果更好。如:

select name from tabel where id in(1,2,3,4,5)

像这种连续的数值,我们可以使用 BETWEEN AND,如:

select name from tabel where id between 1 and 5

5、注意 like 中通配符的使用。
下面的语句会导致全表扫描,尽量少用。如:

select id from tabel where name like'%UncleToo%'

或者

select id from tabel where name like'%UncleToo'

而下面的语句执行效率要快的多,因为它使用了索引:

select id from tabel where name like'UncleToo%'

6、避免在 where 子句中对字段进行表达式操作。
如:

select name from table where id/2 = 100

正确的写法应该是:

select name from table where id = 100*2

7、避免在 where 子句中对字段进行函数操作。
如:

select id from table where substring(name,1,8) = 'UncleToo'

select id from table where datediff(day,datefield,'2014-07-17') >= 0

这两条语句中都对字段进行了函数处理,这样就是的查询分析器放弃了索引的使用。正确的写法是这样的:

select id from table where name like'UncleToo%'

select id from table where datefield <= '2014-07-17'

也就是说,不要在 where 子句中的 = 左边进行函数、算术运算或其他表达式运算。
8、在子查询中,用 exists 代替 in 是一个好的选择。
如:

select name from a where id in(select id from b) 

如果我们将这条语句换成下面的写法:

select name from a where exists(select 1 from b where id = a.id)

这样,查询出来的结果一样,但是下面这条语句查询的速度要快的多。

转载于:https://my.oschina.net/idea813/blog/1615682

SQL语句常用优化技巧相关推荐

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

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

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

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

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

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

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

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

  5. sql语句的优化方式

    大部分我们在刚从事后端工作时写的sql语句主要注重结果,并没有对他的执行效率进行考虑,只是单纯的完成自己手头上的任务,毕竟开发环境下表中的数据量较少,执行起来也很快,并没有察觉到自己写的sql语句的执 ...

  6. mysql 如何优化sql语句,如何优化SQL?MySQL中超实用的SQL语句送给大家

    如何优化SQL?MySQL中超实用的SQL语句送给大家 如何优化SQL?MySQL中超实用的SQL语句送给大家 在写SQL时,经常灵活运用一些SQL语句编写的技巧,可以大大简化程序逻辑.减少程序与数据 ...

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

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

  8. 52条 SQL 语句性能优化策略全面解析,你知道多少种?建议收藏!

    点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 每日英文 Don't always in the memories of t ...

  9. SQL语句性能优化--LECCO SQL Expert

    SQL语句的优化是将性能低下的SQL语句转换成目的相同的性能优异的SQL语句. 人工智能自动SQL优化就是使用人工智能技术,自动对SQL语句进行重写,从而找到性能最好的等效SQL语句. 数据库性能的优 ...

最新文章

  1. Floyd算法 笔记 C/C++
  2. P2685 [TJOI2012]桥(最短路+线段树)
  3. (15)FPGA面试技能提升篇(TDD-LTE协议、GTX IP)
  4. 办公必备APP,收藏有料
  5. CSS设置背景色透明字体不透明
  6. pr如何跳到关键帧_全套pr视频剪辑教程[叫兽七叔讲解]
  7. 批量将B站学习视频以MP4格式下载到本地
  8. Device ID的用处和读取方法
  9. 论文解读:预测lncRNA的相互作用生物分子类型:一种集成深度学习方法
  10. 新网站关键词优化小技巧
  11. python读取usb数据显示_在python中从各种usb设备读取和存储各种数据
  12. 穷查理宝典-读书笔记
  13. 实验六软件包管理linux,oeasy教您玩转linux010202软件包管理apt
  14. 音视频篇 - 音视频基础概念
  15. Leetcode——507. Perfect Number
  16. Javascript 与 或 非 符号
  17. 小谈Oben_Pai——AI+区块链的超级APP落地应用
  18. 史上最全小型水库雨水情测报及大坝安全监测系统实施方案-花1小时让您秒变专家
  19. 什么是常识?一个人独立生活所具备的能力
  20. 点击按钮时显示按钮被按下的效果

热门文章

  1. MongoDB 的分片技术
  2. OpenCV中的级联分类器Cascade Classifier(面部识别)
  3. linux查找有用日志常用技巧
  4. CardLayout使用
  5. 在Azure平台上使用托管卡进行身份认证
  6. JavaScript随机数的应用
  7. 使用Tslib在触摸屏上显示汉字【转】
  8. [Luogu1462]通往奥格瑞玛的道路
  9. 界面控件包Essential Studio for Windows Forms 2017 v3发布丨附下载
  10. 最长递增子序列 动态规划