1、创建索引

(1) 要尽量避免全表扫描,首先应考虑在where 及order by涉及的列上建立索引

(2) 在经常需要进行检索的字段上创建索引,一个表中的索引最好不要超过6个

2、避免在索引上使用计算

3、使用预编译查询

(1) 程序中通常是根据用户的输入来动态执行SQL ,这时应该尽量使用参数化SQL,这样不仅可以避免SQL 注入漏洞攻击,最重要数据库会对这些参数化SQL进行预编译,这样第一次执行的时候DBMS会为这个SQL语句进行查询优化并且执行与便于,这样以后再执行这个SQL的时候就直接使用预编译的结果,这样可以大大提高执行的速度

4、调整where字句中的连接顺序

(1) DBMS一般采用自上而下的顺序解析where字句,根据这个原理表连接最好写在其他where条件之前,那些可以过滤掉最大数据记录

5、尽量将多条SQL语句压缩到一句sql中

(1) 每次执行SQL的时候都要建立网络连接,进行权限校检、进行SQL 语句的查询优化发送执行结果,这个过程是非常耗时的,因此尽量避免过多的执行SQL语句,能够压缩到一句SQL执行的语句就不要用多条来执行

6、用where字句替换having字句

(1) Having只会只会在检索出所有记录之后才对结果集进行过滤,而where则是在聚合前刷选记录,having中的条件一般用于聚合函数的过滤,初次之外,应将条件写在where字句中

7、使用表的别名

(1) 涉及多张表时,使用表别名可以减少解析的时间并减少哪些列名歧义引起的语法错误

8、使用UNION ALL替换UNION

9、使用临时表暂存中间结果

(1) 临时表避免了多次扫描主表,减少了程序中“共享锁”阻塞“更新锁”,减少了阻塞,提高了并发性能,但是也得避免频繁创建和删除临时表,以减少系统表资源的消耗

10、只在必要的情况下使用事务begin translation

11、尽量避免使用游标

(1) 尽量避免向客户返回大数据量,若数据量过大,应该考虑相应的需求是否合理,因为游标的效率较差,如果游标操作的数据超过一万行,那么应该考虑改写

12、用varchar/nvarchar代替char/nchar

(1) 变长字段存储空间小,变长字段的null是不占用空间的

13、查询语句优化

(1) 任何地方不要使用* ,要用具体的字段名替换*

(2) 尽量避免在where子句中进行null值判断,否则导致引擎放弃使用索引而进行全表扫描

(3) 不能前置%

(4) 对于连续的数值,能用between就不要用in了

(5) 如果查询的两个表相当,那么用in和exists差别不大

(6) 考虑在where及order by涉及涉及的列上建立索引

(7) 避免在where字句中使用!=或<>操作符

(8) 避免在where字段字段进行表达书和函数操作

14、更新update语句优化

(1) 如果只更改1、2个字段,不要update全部字段,频繁调用会引起明显的性能消耗,同时带来大量的日志

15、删除delete语句优化

(1) 最高效的删除重复记录的方法

DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID) FROM EMP X WHERE X.EMP_NO = E.EMP_NO);

16、插入insert语句优化

(1) 如果一次插入数据量很大,可以使用select into代替create table,避免造成大量log,如果数据量不大,应先create table 然后insert

17、避免频繁创建和删除临时表,以减少系统表资源的消耗

18、避免向客户返回大量的数据量

19、尽量避免大事务操作

数据库SQL调优的几种方式的更多相关文章

  1. php开发面试题---数据库SQL调优的几种方式

    php开发面试题---数据库SQL调优的几种方式 一.总结 一句话总结: 创建索引:尽量避免使用or或者like,或者sql中的正则 存储查询中间结果 可以加sphinx搜索技术 查询优化 主从数据库 ...

  2. 数据库SQL调优的几种方式(转)

    原文地址:https://blog.csdn.net/u010520146/article/details/81161762 在项目中,SQL的调优对项目的性能来讲至关重要,所有掌握常见的SQL调优方 ...

  3. 数据库SQL调优的几种方式 EFcore读的情况下使用 AsNoTracking非跟踪查询

    不要用GUID 当主键 没有规律 可以用雪花ID DBA 优化法则 硬件资源是根本,DBA是为了充分利用硬件资源 一般清空下可以不使用外键 可以提高性能 合理使用临时表 临时表分页; 一些查询语句加w ...

  4. 数据库SQL调优之"执行计划"【未完待续】

    什么是“执行计划”?“执行计划”怎么用于SQL调优? 内容待添加... 参考文章: [1]写SQL要学会使用"执行计划" by 鹏霄万里展雄飞      

  5. <随便写>数据库调优的几种方式

    1.创建索引 要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引 在经常需要进行检索的字段上创建索引,比如要按照表字段username进行检索,那么就应该在姓名字段 ...

  6. OCM_第十五天课程:Section6 —》数据库性能调优 _SQL 访问建议 /SQL 性能分析器/配置基线模板/SQL 执行计划管理/实例限制

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...

  7. OCM_第十四天课程:Section6 —》数据库性能调优_各类索引 /调优工具使用/SQL 优化建议

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...

  8. SQL调优常用方法

    在使用DBMS时经常对系统的性能有非常高的要求:不能占用过多的系统内存和 CPU资源.要尽可能快的完成的数据库操作.要有尽可能高的系统吞吐量.如果系统开发出来不能满足要求的所有性能指标,则必须对系统进 ...

  9. SQL调优

    # 问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...

随机推荐

  1. 每天都在用String,你真的了解吗?

    1.String概述 java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如"abc")都可以被看作是实现此类的实例 String 中包括用于检查各个 ...

  2. Flutter简介

    Flutter简介 Flutter 是 Google推出并开源的移动应用开发框架,主打跨平台.高保真.高性能.开发者可以通过 Dart语言开发 App,一套代码同时运行在 iOS 和 Android平 ...

  3. Javascript模块化编程(一):模块的写法 (转)

    Javascript模块化编程(一):模块的写法 原文作者: 阮一峰 日期: 2012年10月26日 随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞 ...

  4. 编译gawk出现问题,没有安装gawk。

    今天编译kernal的时候出现了一个错误:GNU awk is required for lib/memtype.h made by memtypes.awk..查了资料,原来是没有安装gawk的缘故 ...

  5. java基础-01:dos命令

    进入cmd方式 win + r 输入 cmd 随便进入一个文件夹 在导航栏输入cmd,回车即进入命令行 命令 盘符切换:直接输入 E: ,回车即可 查看文件夹下所有目录:dir 切换目录: cd 跨盘 ...

  6. 点击按钮出现时间javascrip代码

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. jenkins,开源CI工具

    目前最热门CI工具的jenkins,学习笔记: 一.jenkins如何实现执行命令 1.执行jenkins同主机上的命令

  8. lammps_data文件

    一.notes: 1.不在data文件里写“#”(注释),否则,容易出错: 2.前两行不用写东西(建议): 3.相互作用系数可以不用写在data里边(如pair_coeff等),可有可无,but fo ...

  9. CODING DevOps 代码质量实战系列第一课:代码规范与 Git Flow

    讲师介绍 杨周 CODING DevOps 架构师 CODING 布道师 连续创业者.DIY/Linux 玩家.知乎小 V,曾在创新工场.百度担任后端开发.十余年一线研发和带队经验,经历了 ToB.T ...

  10. JVM系列.历史上出现过的Java虚拟机

    HotSpot绝对是当今商用虚拟机的王者,但是在Java历史上出现过很多Java虚拟机,这篇文章就来整理下历史上出现过的Java虚拟机以及他们的特性. Sun Classic Sun Classic虚 ...