优化数据库语句的几个简单技巧

1. 索引

a. SQL语句的 where 和 join 部分中用到的字段,都应该加上索引。

b. 尽量用加索引的字段进行直接判断,不要对加索引的字段进行转化后再判断,因为这样会导致加的索引无效,达不到优化的效果。

e.g. 查询A表中所有2016年的数据

CREATE INDEX A_idx ON A (date_column);

SELECT text, date_column
  FROM A
 WHERE TO_CHAR(date_column, ‘YYYY‘) = ‘2016‘;

上述的索引 date_column并没有生效,这个查询可以改为比较 date_column 的范围。

SELECT text, date_column
  FROM A
 WHERE 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, b
  FROM A
 WHERE a = :a
   AND b = :b;

SELECT id, a, b
  FROM A
 WHERE b = :b;

索引 cover 了第一个 select 语句,但是第二个 SQL 语句并没有最大程度的利用索引。可以对索引进行修改以达到最大利用的效果。

CREATE INDEX A_idx ON A(b, a);

d. 加索引的字段,如果进行了 like 通配符过滤某些字符串,这时候的索引是无效的。

CREATE INDEX A_idx ON A (text);

SELECT id, text
  FROM A
 WHERE text LIKE ‘%TERM%‘;

注意: 如果整个查询所有引用的列都包含在索引中,那么这个查询就不需要直接访问表,查询速度就会提高。

2. 移除不需要的表和字段

不要将不需要的字段返回 SQL 客户端。

不要在SQL语句查询不需要的表

3. 移除外部链接

4. 尽量不要对字段进行转换后再比较

直接用原有字段查询比转换后再查询的效率高。比如本文第一个查询2016年数据的sql语句。

时间: 2024-10-24 23:27:21

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

代码示例:一些简单技巧优化JavaScript编译器工作详解,让你写出高性能运行的更快JavaScript代码

告诉你一些简单的技巧来优化JavaScript编译器工作,从而让你的JavaScript代码运行的更快.尤其是在你游戏中发现帧率下降或是当垃圾回收器有大量的工作要完成的时候. 单一同态: 当你定义了一个两个参数的函数,编译器会接受你的定义,如果函数参数的类型.个数或者返回值的类型改变编译器的工作会变得艰难.通常情况下,单一同态的数据结构和个数相同的参数会让你的程序会更好的工作. function example(a, b) { // 期望a,b都为数值类型 console.log(++a * +

数据库调优教程(十二) 优化sql语句

五.           优化Sql语句 上一章讲了如何设计一张好的表,一张好的表自然需要好的sql语句去操作它.本章就来聊聊如何优化sql语句. 1.      Sql语句优化原则 优化需要优化的Query 定位优化对象性能瓶颈 从Explain入手 尽可能在索引中完成排序 只取自己需要的Column 尽可能避免复杂的join和子查询 2.     优化limit select * from test1 order by id limit 99999,10 原语句虽然使用了id索引,但是相当于

Expert 诊断优化系列------------------语句调优

前面三篇通过CPU.内存.磁盘三巨头,讲述了如何透过现在看本质,怎样定位服务器三巨头反映出的问题.为了方便阅读给出链接: Expert 诊断优化系列------------------你的CPU高么? Expert 诊断优化系列------------------内存不够用么? Expert 诊断优化系列------------------冤枉磁盘了 通过三篇文章的基本介绍,可以看出系统的语句如果不优化,可能会导致三巨头都出现异常的表现.所以本篇开始介绍系统中的重头戏--------------

(zz)数据库设计中的14个技巧

1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对 应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实 体,或多张原始单证对应一个实体.这里的实体可以理解为基本表.明确这种对应关系后,对我们设计 录入界面大有好处. [例1]:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表.社会 关系表.工作简历表.这就是“一张原始单证对应多个实体”的典型例子. 2. 主键与外键

数据库设计中的14个技巧

1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对 应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实 体,或多张原始单证对应一个实体.这里的实体可以理解为基本表.明确这种对应关系后,对我们设计 录入界面大有好处. [例1]:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表.社会 关系表.工作简历表.这就是“一张原始单证对应多个实体”的典型例子. 2. 主键与外键

优化Laravel5框架程序的10条技巧

性能一直是 Laravel 框架为人诟病的一个点,所以调优 Laravel 程序算是一个必学的技能.接下来分享一些开发的最佳实践,还有调优技巧,大家有别的建议也欢迎留言讨论.这里是简单的列表:配置信息缓存 artisan config:cache路由缓存 artisan route:cache类映射加载优化 artisan optimize自动加载优化 composer dumpautoload使用 Memcached 来存储会话 config/session.php使用专业缓存驱动器 conf

如何用 SQL Tuning Advisor (STA) 优化SQL语句

在Oracle10g之前,优化SQL是个比较费力的技术活,不停的分析执行计划,加hint,分析统计信息等等.在10g中,Oracle推出了自己的SQL优化辅助工具: SQL优化器(SQL Tuning Advisor :STA),它是新的DBMS_SQLTUNE包.使用STA一定要保证优化器是CBO模式下. 执行DBMS_SQLTUNE包进行sql优化需要有advisor的权限: SQL> create user dave identified by dave; 用户已创建. SQL> gra

应用索引技术优化SQL 语句一

一.前言 很多数据库系统性能不理想是因为系统没有经过整体优化,存在大量性能低下的SQL 语句.这类SQL语句性能不好的首要原因是缺乏高效的索引.没有索引除了导致语句本身运行速度慢外,更是导致大量的磁盘读写操作,使得整个系统性能都受之影响而变差.解决这类系统的首要办法是优化这些没有索引或索引不够好的SQL语句. 本文讨论和索引相关的有关内容,以及通过分析语句的执行计划来讲述如何应用索引技术来优化SQL 语句.通过分析执行计划,读者可以检查索引是否有用,以及如何创建高效的索引.本文对数据库管理人员以

Oracle DBA优化数据库性能心得

如今的优化己经向优化等待(waits)转型了,实际中性能优化最根本的出现点也都集中在IO,这是影响性能最主要的方面,由系统中的等待去发现Oracle库中的不足.操作系统某些资源利用的不合理是一个比较好的办法. 一.通过操作系统的一些工具检查系统的状态,比如CPU.内存.交换.磁盘的利用率,根据经验或与系统正常时的状态相比对,有时系统表面上看起来看空闲这也可能不是一个正常的状态,因为cpu可能正等待IO的完成.除此之外我们还应观注那些占用系统资源(cpu.内存)的进程. 1.如何检查操作系统是否存