1. 尽量避免非操作符的使用,在索引上使用 NOT<> 等操作符,数据库管理系统是不会使用索引的,可以将查询语句转化为可以使用索引的查询。
  2. 避免对查询的列的操作,任何对列的操作都可能导致全表扫描,这里所谓的操作包括数据库函数,计算表达式,查询时要尽可能将操作移至等式的右边,甚至去掉函数。
  3. 避免不必要的类型转化,需要注意的是,尽量避免潜在的数据类型转换。如将字符型数据与数值型数据比较,会自动将字符进行转换,从而导致全表扫描。
  4. 增加查询的范畴限制。避免全范围的搜索。
  5. 合理使用__IN__ 与__EXISTS__。例如:有A,B两个表,他们分别使用如下的情况:
    • 当只显示一个表的数据如 A,关系条件只加一个ID时,使用IN更合适,SQL语句如下:
    select * from A where id in (select id from B)
    • 当只显示一个表的数据如 A,关系条件不只一个列,例如关系条件涉及到的列为ID,col1 时,使用IN 就不方便了,可以使用EXISTS,SQL语句如下:
    select * from A where EXISTS (select 1 from B where id = A.id and col1 = A.col1)
    • in 与 exists 的区别:in 是把外表和内表作hash连接,而exists 是对外表作loop 循环,每次loop循环再对内表进行查询。一直来认为exists 比in 效率高的说法是不准确的。如果查询的两个表大小相当,那么用in 和exists 差别不大。如果两个表中一个较小,一个是大表,则子查询大表用exists,子查询小表用in。
  6. 尽量去掉__<>__。尽量去掉<>,避免全表扫描,如果数据是枚举值,且取值范围固定,则修改OR 或者 IN a<>0 改为a>0 or a<0 a<>'' 改为a >''。
  7. 去掉where子句中的is null 和 is not null。where子句中的is null 和 is not null 将不会使用索引而是进行全表搜索,因此需要通过改变查询方式,分情况讨论等方法,去掉where子句中的is null 和 is not null ,is not null 改为A>0 或者 A>''。
  8. 尽量不要使用前导模糊查询。由于前导模糊查询(前面有%的like查询)不能利用索引,所以速度会比较慢。
  9. select 子句中避免使用 ' * '。当你想在select 子句中列出所有的column时,使用动态SQL列引用 ' * ' 是一个方便的方法,不幸的是,这是一个非常低效的方法。实际上,数据库在解析的过程中,会将' * ' 依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费更过的时间。
  10. 规范所有SQL关键字的书写,比如 select,update,delete,from等,要么全部大写,要么全部小写,不要大小写混写。

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

  1. MySQL - SQL语句优化方法

    1.使用 show status 了解各种 SQL 的执行频率 mysql> show status like 'Com%'; 该命令可以查询 sql 命令的执行次数. 2.定位执行效率较低的 ...

  2. SQL语句优化方法

    1.1 注释使用 在语句中多写注释,注释不影响SQL语句的执行效率.增加代码的可读性. 1.2 对于事务的使用 尽量使事务处理达到最短,如果事务太长最好按功能将事务分开执行(如:可以让用户在界面上多几 ...

  3. SQL语句优化方法30例

    1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如: SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_I ...

  4. SQL系列 - SQL语句优化个人总结

    关于SQL语句优化方法 有些是通用的(如避免Select *): 有些不同的数据库管理系统有所区别(如Where子句顺序): 然后必须根据实际环境进行调优,因为即使是相同的数据库和表,在数据量或其他环 ...

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

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

  6. mysql优化sql语句的方法

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索 ...

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

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

  8. MySQL常用SQL语句优化

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

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

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

随机推荐

  1. redhat5安装Oracle11g

    redhat5安装Oracle11g 测试环境redhat5.5 oracle11g VMware 虚拟机 一.linux系统安装 二.下载oracle安装包 (我们需要把oracle安装包上传到li ...

  2. scrapy爬虫框架setting模块解析

    平时写爬虫的时候并不需要设置setting里所有的参数,今天心血来潮,花了点时间查了一下setting模块创建后自动写入的所有参数的含义,记录一下. 模块相关说明信息 # -*- coding: ut ...

  3. Linux小记 — Ubuntu自动化配置

    前言 工欲善其事,必先利其器.经过多次的重复配置ubuntu开发坏境,我终于决定花点时间总结一下,并将其写成一个自动化配置脚本.服务器实例:ubuntu 16.04,技术栈:shell,python. ...

  4. VirtualBox 安装 Ubuntu 14.04 无法调节分辨率问题

    基础环境 宿主系统:Windows 10 虚拟机系统:Ubuntu 14.04-32bit.Ubuntu 14.04-64bit VirtualBox:5.2.0 r118431 (Qt5.6.2) ...

  5. mysql中对字符集和校对规则的认识

    字符集:指符号和字符编码的集合.校对规则:比较字符编码的方式.GBK2312:主要包括简体中文字符及常用符号,对于中文字符采用双字节编码的格式,也就是说一个汉字字符在存储占两个字节.GBK:包括有中. ...

  6. dedecms在php7下的使用方法,织梦dedecsm后台一片空白的解决方法

    前几天,一个老客户,最近升级了服务器,php到php7,把织梦dedecms转移到新服务器后,不能登录后台,让帮忙看一下. 我看了下他们的网站,使用的是织梦V57_UTF8_SP1前台页面是可以访问的 ...

  7. Spring Boot [使用 Druid 数据库连接池]

    导读 最近一段时间比较忙,以至于很久没有更新Spring Boot系列文章,恰好最近用到Druid, 就将Spring Boot 使用 Druid作为数据源做一个简单的介绍. Druid介绍: Dru ...

  8. linhaifeng

    http://www.cnblogs.com/linhaifeng/p/7278389.html http://blog.51cto.com/egon09

  9. 环链表相关的题目和算法[LeetCode]

    这篇文章讨论一下与链表的环相关的题目,我目前遇到的一共有3种题目. 1.判断一个链表是否有环(LeetCode相关题目:https://leetcode.com/problems/linked-lis ...

  10. js判断文件类型大小并给出提示

    上传文件是工作中常用的功能,不同的场景对不同的文件类型和文件大小都有不同的要求: <form id="uploadForm" method="post" ...