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

优化数据库语句的几个简单技巧相关推荐

  1. oracle数据库创建索引以及简单优化sql语句

    Oracle 建立索引及SQL优化 数据库索引: 索引有单列索引 复合索引之说 如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引.数据库索引主要进行提高访 ...

  2. 优化数据库的方法及SQL语句优化的原则

    优化数据库的方法: 1.关键字段建立索引. 2.使用存储过程,它使SQL变得更加灵活和高效. 3.备份数据库和清除垃圾数据. 4.SQL语句语法的优化.(可以用Sybase的SQL Expert,可惜 ...

  3. 优化数据库的思想及SQL语句优化的原则

    优化数据库的思想: ================ 1.关键字段建立索引. 2.使用存储过程,它使SQL变得更加灵活和高效. 3.备份数据库和清除垃圾数据. 4.SQL语句语法的优化.(可以用Syb ...

  4. SQL Server 2000优化SELECT语句方法

    本文是SQL Server SQL语句优化系列文章的第一篇.该系列文章描述了在Micosoft's SQLServer2000关系数据库管理系统中优化SELECT语句的基本技巧,我们讨论的技巧可在Mi ...

  5. 优化 ASP 应用程序和 VBScript 的技巧。

    摘要:本文介绍优化 ASP 应用程序和 VBScript 的技巧. 目录 技巧 1:将经常使用的数据缓存在 Web 服务器上 技巧 2:将经常使用的数据缓存在 Application 或 Sessio ...

  6. 不止SQL优化,数据库还有哪些优化大法?

    前言 当有人问你如何对数据库进行优化时,很多人第一反应想到的就是SQL优化,如何创建索引,如何改写SQL,他们把数据库优化与SQL优化划上了等号. 当然这不能算是完全错误的回答,只不过思考的角度稍微片 ...

  7. 02 MySQL优化 - 优化SQL语句

    MySQL-refman-8.0 目录 一.优化SELECT语句 1.1 WHERE 语句优化 1.2 范围优化 1.2.1 单部分索引的范围访问方法 1.2.2 多部分索引的范围访问方法 1.2.3 ...

  8. 数据库设计中的14个技巧

    数据库设计中的14个技巧     选择自 sirfei 的 Blog 1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对 应且只对应 ...

  9. 优化数据库大幅度提高Oracle的性能

    转自:http://oracle.zjunbsn.com/content.asp?id=2900 作者:王畅  来源:Oracle俱乐部  时间:2008-10-18 几个简单的步骤大幅提高Oracl ...

最新文章

  1. 网站改版后确保无误才能上线!
  2. Blocks与Dispatch Queue的使用
  3. 在SMARTFORMS中取消使用WORD作为编辑器
  4. 第四范式@2020 WAIC世界人工智能大会
  5. System.InvalidOperationException:“线程间操作无效: 从不是创建控件“txtPortName02”的线程访问它。”...
  6. hdu--4902--线段树
  7. java单例模式的七种写法_Java设计模式之单例模式的七种写法
  8. DNN(DotNetNuke)注册用户终于突破10万人了,其3.0也终于跳票了...
  9. JSON 之 SuperObject(17): 实例 - 借用 Google 实现全文翻译
  10. SpringCloud 使用Zuul构建微服务网关
  11. 前端框架——Jquery——基础篇7__工具函数(Utils)
  12. 拓端tecdat|如何使用SAS从Excel中读取一系列单元格
  13. 十大排序算法之二路归并排序(难点为对于递归的理解)
  14. 利用uncode-schedule(冶卫军)构建分布式任务调度
  15. 认识并行、并发、多线程
  16. 万科的管理层为何要在质疑中坚定地推迟董事会改选?
  17. Laravel 速查表 Cache
  18. live2d内嵌html,为你的博客博客/网页添加Live2d二次元老婆的插件/手动方法
  19. 使用opencv的透视变换裁剪倾斜人脸
  20. TIA PORTAL 导出导入数据块

热门文章

  1. bat执行php语句,php与bat之间调用的方法
  2. 框架下cookie的使用_aspnetcore自带cookie的认证期限分析
  3. python开发工具和框架安装器_Python基础框架和工具
  4. c语言编程作业 一哥是何人,PLC编程语言之争:谁才是quot;一哥quot;-简易百科
  5. 我的Go+语言初体验——Go+语言构建神经网络实战手写数字识别
  6. c ++异常处理_C ++中的异常处理
  7. angularjs 实例_AngularJS过滤器示例教程
  8. asp.net core 官方文档
  9. 《Java程序设计》第16周周四:GUI编程及文件对话框的使用
  10. Android 回调接口是啥,回调机制详解(zhuan)