• 不要使用*号进行查询操作,使用具体字段.
  • 索引
    • 在where子句和order by 涉及的字段上合理的添加索引.
  • where 子句优化
    • 避免在where子句中对null值进行判断,应对字段设置默认值

      Select id from t where num is null
      可以对null值设置默认值为-1(根据自己的实际情况设置)
      判断null可以使用
      select id from t where num = -1
    • 避免在where子句中使用!= 或者<>操作符.
    • 尽量避免where子句中使用or 来连接条件
      select id from t where num = 1 or num = 5
      /*可以优化为*/
      select id from t where num = 1
      unicon all
      select id form t where num = 5
    • in 和not  in  也要慎用
      /*连续条件*/
      select id from t where num in (1,2,3)
      /*可以使用 between and */
      select id from t where num between 1 and 3
      /*更多可以使用exists 代替 in*/
      select num from a where num in (select num from t)
      /*替换语句*/
      select num from a where EXISTS (select num from b where a.num = b.num)
    • 模糊查询SQL优化
    • /*正常情况下,百分号在后面可以使用索引*/
      select nickname from t where nickname like 'DBA%'
      /*百分号在前面,不能使用索引,解决方案.改写sql,添加reverse索引*/
      create index idx_t1_name on t1(reverse(name))
      select name from t1 where reverse(name) like reverse('%adc');
      /*前后都有百分号,这种情况一般不能使用索引.*/
      /*1.搜索条件字符串始终在字符串开始的固定位置出现,可以创建函数索进行优化,先创建subStr 函数索引,再使用like 'abc%'示例:*/
      create index idx_substr_t1_name on t1 (substr(name,5,10));
      select id, name ,name_type from t1 where substr(name, 5,10) like 'abc%';
      /*2.搜索条件始终在字符串结尾的某个固定位置出现,可以创建函数组合索引进行优化,先创建reverse + substr 组合函数索引,再使用like reverse '%abc'*/
      create index idx_t1_reverse_name on t1(reverse(substr(name,1,length(name)-4))); select id,name,name_type from t1 where reverse(substr(name,1,length(name)-4)) like reverse('%abc') /*3.搜索字符串再不固定位置出现,优化方案,先建立普通索引列,改写sql*/
      create index idx_t1_name on t1(name) select id,name,name_type from t1 where name in (select name from t1 where name like '%abc%')
    • 避免在where子句中对字段的 '=' 左边进行函数,算数,或其他表达式运算
    • 不要使用select counut(*) from table ,这样不带任何条件的count会引起全表扫描, 可以使用count(1) 代替

SQL语句优化方式的更多相关文章

  1. SQL语句优化方式--进阶篇

    MYSQL性能 最大数据量 抛开数据量和并发数,谈性能都是扯淡(扯的最疼的那种).Mysql没有限制单表最大记录数,它取决与操作系统对文件大小的限制 文件系统 单文件大小限制 FAT32(采用32位二 ...

  2. 数据库 基于索引的SQL语句优化之降龙十八掌(转)

    一篇挺不错的关于SQL语句优化的文章,因不知原始出处,故未作引用说明! 1 前言      客服业务受到SQL语句的影响非常大,在规模比较大的局点,往往因为一个小的SQL语句不够优化,导致数据库性能急 ...

  3. MySQL常用SQL语句优化

    推荐阅读这篇博文,索引说的非常详细到位:http://blog.linezing.com/?p=798#nav-3-2 在数据库日常维护中,最常做的事情就是SQL语句优化,因为这个才是影响性能的最主要 ...

  4. 浅谈mysql配置优化和sql语句优化【转】

    做优化,我在这里引用淘宝系统分析师蒋江伟的一句话:只有勇于承担,才能让人有勇气,有承担自己的错误的勇气.有承担错误的勇气,就有去做事得勇气.无论做什么事,只要是对的,就要去做,勇敢去做.出了错误,承担 ...

  5. MySQL基础操作&&常用的SQL技巧&&SQL语句优化

    基础操作     一:MySQL基础操作         1:MySQL表复制             复制表结构 + 复制表数据             create table t3 like t ...

  6. 关于索引的sql语句优化之降龙十八掌

    1 前言       客服业务受到SQL语句的影响非常大,在规模比较大的局点,往往因为一个小的SQL语句不够优化,导致数据库性能急剧下降,小型机idle所剩无几,应用服务器断连.超时,严重影响业务的正 ...

  7. Oracle SQL语句优化34条

    非常好用的SQL语句优化34条 1)选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 dri ...

  8. 提高系统性能——对SQL语句优化的思考

    软件在研发的过程中自始至终都在留意着系统的可扩展性.但与此同一时候也在关注着系统的性能,SQL语句作为系统性能的一环不容忽视.从今天開始结合开发的经验,谈一下我对SQL语句优化的理解和认知: 1.在联 ...

  9. 重新学习MySQL数据库12:从实践sql语句优化开始

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/a724888/article/details/79394168 本文不堆叠网上海量的sql优化技巧或 ...

随机推荐

  1. bzoj3270 博物馆(期望+高斯消元)

    Time Limit: 30 Sec  Memory Limit: 128 MB 有一天Petya和他的朋友Vasya在进行他们众多旅行中的一次旅行,他们决定去参观一座城堡博物馆.这座博物馆有着特别的 ...

  2. 并行开发 1.Parallel

    原文:8天玩转并行开发——第一天 Parallel的使用 随着多核时代的到来,并行开发越来越展示出它的强大威力,像我们这样的码农再也不用过多的关注底层线程的实现和手工控制, 要了解并行开发,需要先了解 ...

  3. elasticsearch 深入 —— 相关度控制

    控制相关度 处理结构化数据(比如:时间.数字.字符串.枚举)的数据库, 只需检查文档(或关系数据库里的行)是否与查询匹配. 布尔的是/非匹配是全文搜索的基础,但不止如此,我们还要知道每个文档与查询的相 ...

  4. rtp/rtcp

    rtp/rtcp stack custom rtp ORTP UCL Common RTP library Bell Labs RTP Library jrtplib 1.custom rtp sen ...

  5. R语言子集

    取子集方法 x[]:适用于所有r语言 x[[ ]]:适用于list或者data.frame中提取元素 x$:使用元素名做索引,提取list或者data.frame中的某个元素 注意,取出的子集数据类型 ...

  6. springboot2.0+websocket集成【群发消息+单对单】(二)

    https://blog.csdn.net/qq_21019419/article/details/82804921 版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上 ...

  7. ahocorasick使用

    一.作用 字符串匹配,比如现在有个大的列表,客户输入一句话,如何根据客户输入的一句话,从大列表中匹配出字符串交集 具体请详细查阅 二.示例 比如我们有一个wordlist列表,长度很长,包含43430 ...

  8. nginx下TP3.2访问页面总是404

    这是我测试onethink用的配置 可以参考一下 server { listen 80; server_name onethink.dev www.onethink.dev; root /vagran ...

  9. windows切换窗口和网页快捷键

    alt+tab 切换窗口win+D 显示桌面,再按一下返回运来的网页win+M 所有程序最小化 网页之间切换(我用的是360) ctrl + tab 往回切 ctrl + shift +tab

  10. go语言学习之从例子开始

    [目录] go语言从例子开始之Example1.helloworld go语言从例子开始之Example2.类型 go语言从例子开始之Example3.变量 go语言从例子开始之Example4.常量 ...