1.对查询进行优化,应该尽量避免全表扫描,首先应考虑在where和order by涉及的列上建立索引

2.应尽量避免在where子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描

3.应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:

select id from t where num is null

可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:

select id from t where num=0

4.尽量避免在where子句中使用or来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:

selec id from t where num=10 or num=20

改成这样查询:

select id from where num=10 union all select id from t where num=20

5.in和not in尽量不要用,否则导致全表扫描,如:

select id from t where num in(1,2,3)

对于连续的值,能用between就不要用 in

select id from t where num between 1 and 3

6.如果在where子句中使用参数,也会导致全表扫描。如:

select id from t where num=@num

可以改成强制查询使用索引

select id from t with(index(索引名)) where num=@num

7.避免在where子句中队字段进行表达式操作,否则导致全表扫描:

select id from t where num/2=100

应改为:select id from t where num=100*2

8.不要再 where子句中的'='左边进行函数,算数运算或其他表达式运算,否则系统将无法正确使用索引

9.需要的话用exists代替in

select num from a where num in(select num from b)

改成:select num from a where exists(select 1 from b where num=a.num)

10.尽可能的使用varchar/nvarchar代替char/nchar,因为首先变长字段存储空间小,可以节省存储空间。对于存储空间小的,查询会效率更高。

11.任何地方都不要使用select * from t ,用具体的字段列表代替'*',不要返回用不到的任何字段

12.尽量使用表变量来代替临时表,如果表变量包含大量数据请注意索引非常有限(只有主键索引)

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

14.在新建临时表的时候,如果一次性插入数据量大,可以使用insert into 代替create table。否则优先用create table

15.如果使用到了临时表,在存储过程的最后,务必将所有的临时表显式删除,先truncate table,在drop table

sql优化的方法总结的更多相关文章

  1. SQL优化实用方法

    SQL优化:避免索引失效 1.不使用NULL 任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的.因为只有该字段中有null值,即使创建了索引其实也是没有用 ...

  2. sql优化的方法

    参考:https://blog.csdn.net/jie_liang/article/details/77340905 11.不要写一些没有意义的查询,如需要生成一个空表结构: select col1 ...

  3. SQL 优化通用方法

    1. 尽量避免用sub-queres, 可以采用join代替 2. exists代替in not exists 和not in 这两个的性能值得深究,应该不是差太多 3. 索引优化 4. 一些操作会导 ...

  4. 浅谈sql优化

    问题的发现:      菜鸟D在工作的时候发现项目的sql语句很怪,例如 : select a.L_ZTBH, a.D_RQ, a.VC_BKDM, (select t.vc_name from tb ...

  5. oracle性能优化(项目中的一个sql优化的简单记录)

    在项目中,写的sql主要以查询为主,但是数据量一大,就会突出sql性能优化的重要性.其实在数据量2000W以内,可以考虑索引,但超过2000W了,就要考虑分库分表这些了.本文主要记录在实际项目中,一个 ...

  6. 【数据库】SQL优化方法汇总

    最近在研究SQL语句的优化问题. 下面是从网上搜集的,有的地方有点老了,可是还是有很多可以借鉴的地方的. 如何加快查询速度? 1.升级硬件. 2.根据查询条件,建立索引,优化索引.优化访问方式,限制结 ...

  7. sql优化的50中方法

    查询速度慢的原因很多,常见如下几种:    1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)    2.I/O吞吐量小,形成了瓶颈效应.    3.没有创建计算列导致查询不优化 ...

  8. Oracle之SQL优化专题01-查看SQL执行计划的方法

    在我2014年总结的"SQL Tuning 基础概述"中,其实已经介绍了一些查看SQL执行计划的方法,但是不够系统和全面,所以本次SQL优化专题,就首先要系统的介绍一下查看SQL执 ...

  9. sql优化的几种方法

    在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 ord ...

  10. sql优化常见的集中方法

    在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 ord ...

随机推荐

  1. Blazor前后端框架Known功能介绍:系统安装激活及自定义

    本章介绍系统安装与激活及其自定义功能. 概述 框架内置简单的系统安装功能. 录入企业编码.名称.系统名称.产品密钥.管理员密码信息完成安装. 可自定义高级安装功能,如安装数据库等您产品所需的安装信息. ...

  2. LRU 力扣 146 https://leetcode.cn/problems/lru-cache/

    一道经典题目,用双向链表去做能够满足O1的复杂度 核心代码如下 class LRUCache {    MyLinkedList myLinkedList;    int size;    int c ...

  3. Asp-Net-Core学习笔记:gRPC快速入门

    前言 此前,我在做跨语言调用时,用的是 Facebook 的 Thrift,挺轻量的,还不错. Thrift是一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务.它被当作一个远程过程调用 ...

  4. 洛谷 T356695 文字处理软件(重置版)

    很简单了啊! 说普及- 我都不信 作者(也就是我)链接:https://www.luogu.com.cn/problem/T356695 好好想想!!!! 题目! 文字处理软件(重置版) 题目背景 A ...

  5. Kafka主从模式和故障切换

    Kafka集群有主从模式吗? Kafka集群实际上并没有严格意义上的主从模式.Kafka的设计是基于分布式的,每个Topic都会切分为多个Partition,每个Partition都有一个Leader ...

  6. DAY001_二进制运算

    左移和右移 无符号左移? Java没有无符号左移 无符号右移 左边补0 有符号右移 左边用原符号位补位 即正数补0效果同无符号右移.负数补1 有符号左移 右边补0 import org.junit.T ...

  7. 7、Mybatis之特殊SQL

    7.1 创建接口.映射文件和测试类 ++++++++++++++++++++++++++分割线++++++++++++++++++++++++++ 注意namespace属性值为对应接口的全限定类名 ...

  8. C语言下载minGW地址

    https://sourceforge.net/projects/mingw-w64/files/ 下载红框内即可

  9. 《深入理解Java虚拟机》读书笔记:基于栈的字节码解释执行引擎

      虚拟机是如何调用方法的内容已经讲解完毕,从本节开始,我们来探讨虚拟机是如何执行方法中的字节码指令的.上文中提到过,许多Java虚拟机的执行引擎在执行Java代码的时候都有解释执行(通过解释器执行) ...

  10. 青语言V1.0正式发布

    大家好,距离6月1日青语言发布第一个版本已经过去了三个月,而今我们按计划发布青语言的1.0版本. 青语言主页:https://qingyuyan.cn V1发布宣传视频:https://www.bil ...