优化数据库语句的几个简单技巧
1. 索引
a. SQL语句的 where 和 join 部分中用到的字段,都应该加上索引。
b. 尽量用加索引的字段进行直接判断,不要对加索引的字段进行转化后再判断,因为这样会导致加的索引无效,达不到优化的效果。
e.g. 查询A表中所有2016年的数据
CREATE INDEX A_idx ON A (date_column);SELECT text, date_columnFROM AWHERE TO_CHAR(date_column, 'YYYY') = '2016';
上述的索引 date_column并没有生效,这个查询可以改为比较 date_column 的范围。
SELECT text, date_columnFROM AWHERE date_column >= TO_DATE('2016-01-01', 'YYYY-MM-DD')AND date_column < TO_DATE('2016-01-01', 'YYYY-MM-DD');
c. 建立的索引,尽可能的 cover 你的 SQL 语句。
e.g. 下面2个查询语句都用了A表中的b字段
CREATE INDEX A_idx ON A (a, b);SELECT id, a, bFROM AWHERE a = :aAND b = :b;SELECT id, a, bFROM AWHERE b = :b;
索引 cover 了第一个 select 语句,但是第二个 SQL 语句并没有最大程度的利用索引。可以对索引进行修改以达到最大利用的效果。
CREATE INDEX A_idx ON A(b, a);
d. 加索引的字段,如果进行了 like 通配符过滤某些字符串,这时候的索引是无效的。
CREATE INDEX A_idx ON A (text);SELECT id, textFROM AWHERE text LIKE '%TERM%';
注意: 如果整个查询所有引用的列都包含在索引中,那么这个查询就不需要直接访问表,查询速度就会提高。
2. 移除不需要的表和字段
不要将不需要的字段返回 SQL 客户端。
不要在SQL语句查询不需要的表。
3. 移除外部链接
4. 尽量不要对字段进行转换后再比较。
直接用原有字段查询比转换后再查询的效率高。比如本文第一个查询2016年数据的sql语句。
转载于:https://www.cnblogs.com/lan-writenbook/p/6024590.html
优化数据库语句的几个简单技巧相关推荐
- oracle数据库创建索引以及简单优化sql语句
Oracle 建立索引及SQL优化 数据库索引: 索引有单列索引 复合索引之说 如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引.数据库索引主要进行提高访 ...
- 优化数据库的方法及SQL语句优化的原则
优化数据库的方法: 1.关键字段建立索引. 2.使用存储过程,它使SQL变得更加灵活和高效. 3.备份数据库和清除垃圾数据. 4.SQL语句语法的优化.(可以用Sybase的SQL Expert,可惜 ...
- 优化数据库的思想及SQL语句优化的原则
优化数据库的思想: ================ 1.关键字段建立索引. 2.使用存储过程,它使SQL变得更加灵活和高效. 3.备份数据库和清除垃圾数据. 4.SQL语句语法的优化.(可以用Syb ...
- SQL Server 2000优化SELECT语句方法
本文是SQL Server SQL语句优化系列文章的第一篇.该系列文章描述了在Micosoft's SQLServer2000关系数据库管理系统中优化SELECT语句的基本技巧,我们讨论的技巧可在Mi ...
- 优化 ASP 应用程序和 VBScript 的技巧。
摘要:本文介绍优化 ASP 应用程序和 VBScript 的技巧. 目录 技巧 1:将经常使用的数据缓存在 Web 服务器上 技巧 2:将经常使用的数据缓存在 Application 或 Sessio ...
- 不止SQL优化,数据库还有哪些优化大法?
前言 当有人问你如何对数据库进行优化时,很多人第一反应想到的就是SQL优化,如何创建索引,如何改写SQL,他们把数据库优化与SQL优化划上了等号. 当然这不能算是完全错误的回答,只不过思考的角度稍微片 ...
- 02 MySQL优化 - 优化SQL语句
MySQL-refman-8.0 目录 一.优化SELECT语句 1.1 WHERE 语句优化 1.2 范围优化 1.2.1 单部分索引的范围访问方法 1.2.2 多部分索引的范围访问方法 1.2.3 ...
- 数据库设计中的14个技巧
数据库设计中的14个技巧 选择自 sirfei 的 Blog 1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对 应且只对应 ...
- 优化数据库大幅度提高Oracle的性能
转自:http://oracle.zjunbsn.com/content.asp?id=2900 作者:王畅 来源:Oracle俱乐部 时间:2008-10-18 几个简单的步骤大幅提高Oracl ...
最新文章
- 网站改版后确保无误才能上线!
- Blocks与Dispatch Queue的使用
- 在SMARTFORMS中取消使用WORD作为编辑器
- 第四范式@2020 WAIC世界人工智能大会
- System.InvalidOperationException:“线程间操作无效: 从不是创建控件“txtPortName02”的线程访问它。”...
- hdu--4902--线段树
- java单例模式的七种写法_Java设计模式之单例模式的七种写法
- DNN(DotNetNuke)注册用户终于突破10万人了,其3.0也终于跳票了...
- JSON 之 SuperObject(17): 实例 - 借用 Google 实现全文翻译
- SpringCloud 使用Zuul构建微服务网关
- 前端框架——Jquery——基础篇7__工具函数(Utils)
- 拓端tecdat|如何使用SAS从Excel中读取一系列单元格
- 十大排序算法之二路归并排序(难点为对于递归的理解)
- 利用uncode-schedule(冶卫军)构建分布式任务调度
- 认识并行、并发、多线程
- 万科的管理层为何要在质疑中坚定地推迟董事会改选?
- Laravel 速查表 Cache
- live2d内嵌html,为你的博客博客/网页添加Live2d二次元老婆的插件/手动方法
- 使用opencv的透视变换裁剪倾斜人脸
- TIA PORTAL 导出导入数据块
热门文章
- bat执行php语句,php与bat之间调用的方法
- 框架下cookie的使用_aspnetcore自带cookie的认证期限分析
- python开发工具和框架安装器_Python基础框架和工具
- c语言编程作业 一哥是何人,PLC编程语言之争:谁才是quot;一哥quot;-简易百科
- 我的Go+语言初体验——Go+语言构建神经网络实战手写数字识别
- c ++异常处理_C ++中的异常处理
- angularjs 实例_AngularJS过滤器示例教程
- asp.net core 官方文档
- 《Java程序设计》第16周周四:GUI编程及文件对话框的使用
- Android 回调接口是啥,回调机制详解(zhuan)