1.在一条语句中不要重复使用相同的函数
2.尽可能在存储过程中使用临时变量和临时表
如 IF (Object_ID('tempdb..#T') IS NOT NULL) DROP TABLE #T
SELECT … INTO #T FROM…
DROP TABLE #T ;
3.当用SELECT INTO时,它会锁住系统表(SYSOBJECTS,SYSINDEXES等等),
阻碍其他连接的存取。所以在创建临时表时应该用显示申明语句,
即不在事务内使用SELECT INTO语句。
select into #T .......
Begin tran
update #T .......
end tran
4.存储过程中涉及更改数据时一定要使用try catch 事务 回滚等
5.SELECT子句中避免使用'*' 尽可能的写出需要查询的字段名
6.条件中尽量少用否定类型的运算符,条件中尽量少用
'<>', '!=''NOT IN', 'NOT EXISTS','NOT LIKE'等否定类型的运算符,
因为它们不走索引全是表扫描 效率高低比较EXISTS > IN > NOT EXISTS > NOT IN,
所以可用EXISTS代替IN的使用, NOT EXISTS或(OUTER JOIN)代替NOT IN的使用。
7.在WHERE条件中IN后的值排序为先繁后少,减少判断次数
8.避免在索引列上使用IS NULL 和 IS NOT NULL。NULL条件将使该索引无法作用。
9.尽可能不在条件中使用函数
10.用'>=','<='替代'>','<'
示例(不推荐)
SELECT EmpNO
FROM EMP
WHERE DeptNO > 3;
示例(推荐)
SELECT EmpNO
FROM EMP
WHERE DeptNO >= 4;
两者区别在于,前者DBMS将直接跳到Dept等于4的记录而后者将首先定位
到DeptNO = 3的记录再向前扫描到第一个Dept大于3的记录
11.UNION代替OR的使用
12.TOP + 数值 替代 TOP + 百分比 的使用
13.尽量使用精准查询
在LIKE语句中,若能确定使用LIKE'a%'则不用LIKE'%a'或LIKE'%a%'
因为前者能用上索引,而后两者则不能。
且LIKE'%a%'查询时的耗时和字段值总长度成正比,
所以用VARCHAR比用CHAR类型较高效。
如果能精准查询则坚决不能采用模糊查询。
14.条件允许时UNION ALL替代UNION的使用
15.没有必要时不用DISTINCT和ORDER BY
DISTINCT和ORDER BY这些动作可以改在客户端执行。
它们增加了额外的开销。这同UNION和UNION ALL一样的道理
16.使用批处理更新语句,一次更新多条记录比分多次更新而每次更新一条语句快。

SQL性能学习汇总 00的更多相关文章

  1. SQL性能优化汇总

    SQL效率低下也是导致性能差的一个非常重要的原因,可以通过查看执行计划看SQL慢在哪里,一般情况,SQL效率低下原因主要有:   类别 子类 表达式或描述 原因 索引 未建索引 无 产生全表扫描 未利 ...

  2. ORACLE SQL性能优化汇总

    ORACLE SQL语句共享 Oracle SQL语句具备共享特性,为了不让ORACLE数据库重复解析相同的简单单表SQL语句,ORACLE在SGA系统共享区域内SBP共享池内存放的SQL语句将被所有 ...

  3. ORACLE数据库学习之SQL性能优化详解

                                                                                    Oracle  sql 性能优化调整 ...

  4. Mysql高级操作学习笔记:索引结构、树的区别、索引优缺点、创建索引原则(我们对哪种数据创建索引)、索引分类、Sql性能分析、索引使用、索引失效、索引设计原则

    Mysql高级操作 索引概述: 索引是高效获取数据的数据结构 索引结构: B+Tree() Hash(不支持范围查询,精准匹配效率极高) 树的区别: 二叉树:可能产生不平衡,顺序数据可能会出现链表结构 ...

  5. sqlt 之 分析 DB upgrade 导致SQL 性能下降 的方法 xplore

    https://blog.csdn.net/lukeUnique/article/details/79331779 https://mauro-pagano.com/2014/10/27/when-t ...

  6. Oracle 数据库SQL性能查看

    作为一个开发/测试人员,或多或少都得和数据库打交道,而对数据库的操作归根到底都是SQL语句,所有操作到最后都是操作数据,那么对sql性能的掌控又成了我们工作中一件非常重要的工作.下面简单介绍下一些查看 ...

  7. SQL语句学习手册实例版

    SQL语句学习手册实例版 表操作 例1  对于表的教学管理数据库中的表 STUDENTS ,可以定义如下: CREATE  TABLE  STUDENTS (SNO      NUMERIC (6, ...

  8. 一个有趣的SQL Server 层级汇总数据问题

        看SQL Server大V宋大侠的博客文章,发现了一个有趣的sql server层级汇总数据问题.          具体的问题如下:     parent_id emp_id emp_nam ...

  9. SQL索引学习-聚集索引

    这篇接着我们的索引学习系列,这次主要来分享一些有关聚集索引的问题.上一篇SQL索引学习-索引结构主要是从一些基础概念上给大家分享了我的理解,没有实例,有朋友就提到了聚集索引的问题,这里列出来一下: 其 ...

随机推荐

  1. linux下压缩,解压缩的方法

    linux zip命令 zip -r myfile.zip ./* 将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. 2.unzip unzip - ...

  2. Linux/Mac/Shell常用命令

    常用命令 · ls 查看当前目录下的文件 · cd 进入某目录 · cd - 跳转回前一目录 · cd ~ 进入当前用户个人目录 · pwd 输出当前所在路径 · mkdir 新建文件夹 · touc ...

  3. WebService如何调试及测试工具

    http://www.cnblogs.com/zfanlong1314/archive/2012/04/06/2434788.html 通常,我们在Visual Studio里调试ASP.NET网站, ...

  4. opencv学习

    判断是否正确读入的方法: if( argc != 2 || !(src=imread(argv[1], 1)).data ) return -1; --- if( src.empty() ) { re ...

  5. entity-model-first

  6. Nginx 301重定向设置

    server { server_name www.***.com ***.com; if ($host != 'www.***.com' ) { rewrite ^/(.*)$ http://www. ...

  7. 基于MATLAB求解矩阵的正交补矩阵

    1.背景知识:LCMV波束形成器的维纳滤波器结构 2.MATLAB code: [m,n]=size(C); [Q,R]=qr(C); Ca=Q(:,n+1:m);

  8. Like与Instr模糊查询性能

    项目中用到like模糊查询,但是总觉的太小家子气,有没有高逼格的呢? instr(title,'手册')>0 相当于 title like '%手册%' instr(title,'手册')=1 ...

  9. 《大道至简》第一章读后感--JAVA语言伪代码形式

    import.java.大道至简.*; //一·愚公移山 import.java.愚公移山.*; public class YuGongYiShan { //原始需求:惩山北之塞,出入之迂 //项目沟 ...

  10. SQL中SET和SELECT赋值的区别

    最近的项目写的SQL比较多,经常会用到对变量赋值,而我使用SET和SELECT都会达到效果. 那就有些迷惑,这两者有什么区别呢?什么时候哪该哪个呢? 经过网上的查询,及个人练习,总结两者有以下几点主要 ...