1.应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描. 2.应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描 可以考虑用union select id from t where num=10 or Name = 'admin' 可以替换为 select id from t where num = 10 union all select id from t wher…
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. (因为在条件查询条件添加索引,会直接被检索到列,会非常的快速) 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描 (最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库.) 例如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后…
目前,oracle采用的是CBR优化器,所以在有些时候,机器会按照自己的意愿去执行sql,当然oracle是根据本身的一些信息来做决定的,比如:统计信息.但有些时候,机器并不一定会按照我们预想的那样去执行. 今天就遇到这样的一个问题,在查看某一段时间内的出运明细时,执行时间较长.sql如下: select * from C1.T_DECLAREDETAIL t1 where t1.commitdate >= to_date('2013-01-01', 'YYYY-MM-DD') and t1.c…
前言:平常写的SQL可能主要以实现查询出结果为主,但如果数据量一大,就会突出SQL查询语句优化的性能独特之处.一般的数据库设计都会建索引查询,这样较全盘扫描查询的确快了不少.下面总结下SQL查询语句的几个优化效率的地方,经验有限,难免有不足. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引 2.避免在索引列上使用NOT在 where 子句中对字段进行 null 值判断,在索引列上使用NOT, NOT会产生在和在索引列上使用函数相同的影响…
一.SQL优化 1.优化SQL一般步骤 1.1 查看SQL执行频率 SHOW STATUS LIKE 'Com_%'; Com_select:执行SELECT操作的次数,一次查询累加1.其他类似 以下参数只针对InnoDB存储引擎,累加算法略有不同 Innodb_rows_read:SELECT查询操作插入的行数 Innodb_rows_inserted/updated/deleted:执行INSERT/UPDATE/DELETE操作的行数 通过以上参数,可以了解当前数据库应用是查询为主还是写入…
将业务语句翻译成SQL语句不仅是一门技术,还是一门艺术. 下面拿我们程序开发工程师最常用的ROW_NUMBER()分页作为一个典型案例来说明. 先来看看我们最常见的分页的样子: WITH CTE AS( SELECT ROW_NUMBER() OVER ( ORDER BY (A.CreateTime ) AS OrderNo , Table_A.ID , --主键 Table_A.其它字段 FROM Table_A WITH ( NOLOCK ) WHERE RecID = 220051) S…
1.选择最有效率的表名顺序(只在基于规则的优化器中有效): oracle的解析器按照从右到左的顺序处理 from 子句中的表名,from子句中写在最后的表(基础表driving table)将被最先处理,在 from 子句中包含多个表的情况下, 你必须选择记录条数最少的表作为基础表.如果有 3 个以上的表连接查询, 那就需 要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. 2.where子句中的连接顺序: oracle 采用自下而上的顺序解析w…
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库. 备注.描述.评论之类的可以设置为 NULL,其他的,最好不要使用NULL. 不要以为 NULL 不需要空间,比如:char(100) …
SQL 优化总结 (一)SQL Server 关键的内置表.视图 1. sysobjects         SELECT name as '函数名称',xtype as XType  FROM  sysobjects  where xtype in ('V','FN','IF','TF');  -- 查找数据中全部的视图.标量函数.内联表函数.表函数 列名 数据类型 描述 name sysname 对象名,常用列 id int 对象标识号 xtype char(2) 对象类型.常用列.xtyp…
一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一.系统优化中一个很重要的方面就是SQL语句的优 化.对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就可,而是要写出高质量的 SQL语句,提高系统的可用性. 在多数情况下,Oracle…