Orcale数据库索引的使用及优化

        索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。

        索引一般加在查询语句的where条件所需的字段上,方便快速查询。

一个表可以创建多个字段不同的索引。

创建语句:

create index table_index_name on table_name (column1,column2);

表中已有数据且数据量大的时候可以开启多线程创建索引,

--开启16个线程给table_name 表在column1,column2两个字段上创建索引table_index_name 
create index table_index_name on table_name (column1,column2) nologging parallel 16;

创建完成后,再执行查询语句,速度就会快很多。

        查看是否使用索引:explain

在执行查询语句的时候如果要看是否启用了索引查询的话,在查询语句前加上explain关键字。

sql窗口下,在执行时按F5也可以查看使用到的索引。

如果KEY字段的值等于我们定义的索引名字,标识该查询用到了这个索引。

        是否充分使用了索引:key_len算法

从上一步骤的查看索引中执行的结果里有一个key_len字段。

字段本身的长度 eg:varchar(50)

字段字符类型 varchar+2,char+0

字段是否为null:null+1  ,非空+0

字段字符集:utf-8(存纯文字内容,占用3个字节)

根据以上规则计算出来字段的key_len,对比结果,可以找出索引究竟哪些字段确实使用了。

50*3+2=152,key_len=152,则索引使用了这个varchar(50)字段

       优化策略一:范围条件放最后

索引如果用到了范围条件(如时间范围的><),应该吧这个字段放到索引定义的最后边。

        优化策略二:最佳左前缀原则

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值