提高SQL执行效率的16种方法
1)尽量选择较小的列
2)将where中用的比较频繁的字段建立索引
3)select子句中避免使用‘*’
4)避免在索引列上使用计算、not in 和<>等操作
5)当只需要一行数据的时候使用limit 1
6)保证单表数据不超过200W,适时分割表。
针对查询较慢的语句,可以使用explain 来分析该语句具体的执行情况。
------------------------------------------------------------------------------
1.尽量不要在where中包含子查询;
关于时间的查询,尽量不要写成:where to_char(dif_date,’yyyy-mm-dd’)=to_char(’2007-07-01′,’yyyy-mm-dd’);
2.在过滤条件中,可以过滤掉最大数量记录的条件必须放在where子句的末尾;
FROM 子句中写在最后的表(基础表,driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有三个以上的连接查询,那就需要选择交叉表 (intersection table)作为基础表,交叉表是指那个被其他表所引用的表;
3.采用绑定变量
4.在WHERE中尽量不要使用OR
5.用EXISTS替代IN、用NOT EXISTS替代NOT IN;
6.避免在索引列上使用计算:WHERE SAL*12>25000;
7.用IN来替代OR: WHERE LOC_ID=10 OR LOC_ID=15 OR LOC_ID=20
8.避免在索引列上使用IS NULL和IS NOT NULL;
9.总是使用索引的第一个列;
10.用UNION-ALL替代UNION;
11.避免改变索引列的类型:SELECT…FROM EMP WHERE EMPNO=’123′,由于隐式数据类型转换,to_char(EMPNO)=’123′,因此,将不采用索引,一般在采用字符串拼凑动态SQL语句出现;
12.’!=’ 将不使用索引;
13.优化GROUP BY;
14.避免带有LIKE参数的通配符,LIKE ’4YE%’使用索引,但LIKE ‘%YE’不使用索引
15. 避免使用困难的正规表达式,例如select * from customer where zipcode like “98___”,即便在zipcode上建立了索引,在这种情况下也还是采用顺序扫描的方式。如果把语句改成select * from customer where zipcode>”98000″,在执行查询时就会利用索引来查询,显然会大大提高速度;
16.尽量明确的完成SQL语句,尽量少让数据库工作。比如写SELECT语句时,需要把查询的字段明确指出表名。尽量不要使用SELECT *语句。组织SQL语句的时候,尽量按照数据库的习惯进行组织。
在CSDN逛时看到的一个资源,先记下,有些还要亲自再去试一遍,看执行计划是否真的优化。
转载于:https://www.cnblogs.com/xuyatao/p/6738779.html
提高SQL执行效率的16种方法相关推荐
- 提高SQL执行效率的几点建议
提高SQL执行效率的几点建议: 1.尽量不要在where中包含子查询 2.关于时间的查询,尽量不要写成:where to_char(dif_date,'yyyy-mm-dd')=to_char('20 ...
- 提高C程序效率的10种方法
任何代码的美丽不仅在于找到一个给定的问题的解决方案,但在它的简单性,有效性,紧凑性和效率(内存).设计的代码比实际执行更难 .因此,每一个程序员当用C语言开发时,都应该保持这些基本的东西在头脑中. 本 ...
- 测试代码执行效率的几种方法比较
## 一般我们在项目中为了测试某段代码的执行效率一般会使用到NSDate , CFAbsoluteTimeGetCurrent() , CACurrentMediaTime() 这几种常用方法. ## ...
- 如何测试sql服务器的性能测试,SQL执行效率和性能测试方法
对于做管理系统和分析系统的程序员,复杂SQL语句是不可避免的,面对海量数据,有时候经过优化的某一条语句,可以提高执行效率和整体运行性能.如何选择SQL语句,本文提供了两种方法,分别对多条SQL进行量化 ...
- 提高IIS网站服务器的效率的八种方法 (转载)
作者:未知 请作者速与本人联系 以下是提高IIS 5.0网站服务器的执行效率的八种方法: 1. 启用HTTP的持续作用可以改善15~20%的执行效率. 2. 不启用记录可以改善5~8%的执行效率. ...
- 嵌入式编程C语言提高代码效率的14种方法
嵌入式编程C语言提高代码效率的14种方法 1.在可能的情况下使用typedef替代define.当然有时候你无法避免define,但是typedef更好. typedef int* INT_PTR; ...
- EDA - verdi提高dump效率的几种方法Conventional Issues Verdi’s Approach
verdi提高dump效率的几种方法Conventional Issues & Verdi's Approach Issues and Conventional Approach • Toda ...
- improve php,解析提高PHP执行效率
解析提高PHP执行效率 1.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量, 单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的 ...
- Oracle查看执行计划的几种方法
Oracle查看执行计划的几种方法 一般来说,有如下几种获取执行计划的方式: 1.AUTOTRACE方式 AUTOTRACE是Oracle自带的客户端工具SQL*Plus的一个特性.启用AUTOTRA ...
最新文章
- 敏捷过程、极限编程和SCRUM的关系
- 基于re模块的计算器
- SpringBoot项目依赖本地jar包
- (67)FPGA模块调用(Verilog调用system Verilog)
- Android JNI(二)——实战JNI入门之Hello World
- CSS flex 布局 一些基本属性应用
- ArcGIS学习总结(16)——反距离权重法插值及批处理(IDW)
- 【转】高性能web开发
- WRONGTYPE Operation against a key holding the wrong kind of value
- 阿里云商标安心注册服务失败不通过可以退款?
- mkv文件怎样转成mp4
- HAOI2017 八纵八横——线段树分治+线性基
- 如何安装Eclipse WTP插件
- wps html转换成pdf文件,wps怎么转换成pdf
- PHP,$this-{$xxx} 是什么意思?
- tkinter 设置不可编辑_jquery 设置页面元素不可点击、不可编辑、只读(备忘)
- 【开源】我和 JAP(JA Plus) 的故事
- linux终端分辨率对应表,Linux下设置终端分辨率,最全的VGA代码和分辨率对照表...
- 如何直接打印int[]数组
- 灵活替换、无惧缺芯,ARM工控板中的模块化设计
热门文章
- 打造基于大并发通信技术及大数据技术的O2O系统
- 又一访问access
- hda: status timeout: status=0xd0 { Busy }报错解决!
- 【MONGODB】验证MONGODB 主从复制
- 自定义ImageView 实现双击放大缩小还原,无极缩小和旋转及拖动(多机型测试很稳定)
- AndroidManifest中activity属性设置大全
- phpmyadmin配置
- 一.JavaScript基础
- FreeType(字体渲染引擎):支持多种字体格式(TTF,TTC等)
- git安装、使用及常见报错