SQL 语句优化—— (二) 索引的利用
2014-04-24 15:11
330 查看
索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。索引包含由表或视图中的一列或多列生成的键。与书中的索引一样,数据库中的索引使您可以快速找到表或索引视图中的特定信息。索引包含从表或视图中一个或多个列生成的键,以及映射到指定数据的存储位置的指针。通过创建设计良好的索引以支持查询,可以显著提高数据库查询和应用程序的性能。索引可以减少为返回查询结果集而必须读取的数据量。索引还可以强制表中的行具有唯一性,从而确保表数据的数据完整性。但是用索引也有一些限制,并不是任何情况下数据库都会用到索引,那在我们书写查询语句的时候,就必须注意如何尽可能的使用索引。
一.创建索引的语法:
创建索引的标准语法:
create index 索引名 ON 表名 (列名);
创建唯一索引:
create unique index 索引名 ON 表名 (列名);
创建组合索引:
create index 索引名 ON 表名 (列名1,列名2);
二.创建索引的注意事项:
1、采用函数处理的字段不能利用索引,如:
substr(hbs_bh,1,4)=’5400’,优化处理:hbs_bh like ‘5400%’
trunc(sk_rq)=trunc(sysdate), 优化处理:sk_rq>=trunc(sysdate) and sk_rq<trunc(sysdate+1)
2、进行了显式或隐式的运算的字段不能进行索引,如:
ss_df+20>50,优化处理:ss_df>30
‘X’ || hbs_bh>’X5400021452’,优化处理:hbs_bh>’5400021542’
sk_rq+5=sysdate,优化处理:sk_rq=sysdate-5
hbs_bh=5401002554,优化处理:hbs_bh=‘5401002554’,注:此条件对hbs_bh 进行隐式的to_number转换,因为hbs_bh字段是字符型。
3、条件内包括了多个本表的字段运算时不能进行索引,如:ys_df>cx_df,无法进行优化
qc_bh || kh_bh=’5400250000’,优化处理:qc_bh=‘5400‘ and kh_bh=’250000’
一.创建索引的语法:
创建索引的标准语法:
create index 索引名 ON 表名 (列名);
创建唯一索引:
create unique index 索引名 ON 表名 (列名);
创建组合索引:
create index 索引名 ON 表名 (列名1,列名2);
二.创建索引的注意事项:
1、采用函数处理的字段不能利用索引,如:
substr(hbs_bh,1,4)=’5400’,优化处理:hbs_bh like ‘5400%’
trunc(sk_rq)=trunc(sysdate), 优化处理:sk_rq>=trunc(sysdate) and sk_rq<trunc(sysdate+1)
2、进行了显式或隐式的运算的字段不能进行索引,如:
ss_df+20>50,优化处理:ss_df>30
‘X’ || hbs_bh>’X5400021452’,优化处理:hbs_bh>’5400021542’
sk_rq+5=sysdate,优化处理:sk_rq=sysdate-5
hbs_bh=5401002554,优化处理:hbs_bh=‘5401002554’,注:此条件对hbs_bh 进行隐式的to_number转换,因为hbs_bh字段是字符型。
3、条件内包括了多个本表的字段运算时不能进行索引,如:ys_df>cx_df,无法进行优化
qc_bh || kh_bh=’5400250000’,优化处理:qc_bh=‘5400‘ and kh_bh=’250000’
相关文章推荐
- SQL 语句优化—— (一) 操作符优化
- sql sever 索引
- MediaScannerConnectionClient更行数据库中的多媒体文件
- MongoDB---replSet
- Oracler的锁概念
- oracle sqlserver mysql 比较
- MongoDB---主从集
- MongoDB Java 入门手册
- [收集]关于MSSQL数据库的一些查询
- mysql存储过程
- mysql保存中文乱码的原因和解决办法
- oracel SQL多表查询优化
- 数据库事务
- sql 语句执行顺序
- 如何彻底卸载SqlServer2008数据库
- vs2008 vs2010 vs2012 SqlDataSource支持 MySQL
- oracle 常用技能
- linux6 DNS服务配置+ORACLE11g RAC使用scan和DNS连接
- 一个操作oracle的c#类 含分页
- shiro拦截url动态配置在数据库