索引

# 索引:加快查询的(类似书的目录) 索引类型:默认B树索引(默认)、位图索引
# 索引的作用:
  --通过使用索引,可以大大提高数据库的检索速度,改善数据库性能
  --提高速度的同时,消耗大量的时间和空间
  --索引的底层原理:


  1.若没有索引,搜索某个记录时(例如:查找name='王大拿'),需要搜索所有的记录,因为不能保证只有一个'王大拿'
  2.若在name列上创建索引,oracle会对权标进行一次搜索,将每条name值记录并排序,然后构建一个索引目录,在索引目录中查找'王大拿'

***创建索引***

create index 索引名称 on 表名(字段名);
create index myindex on emp(deptno); --主键默认就是索引、
create index myindex2 on emp(deptno,sal); --二级索引

 

# 什么情况适合建立索引?
数据集中的列(主键列(empno.id)不集中,但是因为会被频繁使用,因此也适合建索引),经常在where中使用的列,数据量大

***删除***

drop index 索引名称;

 

--创建索引,创建完成后,如何应用?Oracle会自动使用索引
create index ix_emp on s_emp(first_name);

--删除索引
drop index ix_emp;

 



# 创建索引的指导原则 ---索引的创建会浪费空间,不要过度创建
按照下列标准选择建立索引的列
  1.频繁搜索的列
  2.经常用作查询选择的列
  3.经常排序、分组的列
  4.经常用作连接的列(主键/外键)

请不要使用下面的列创建索引
  1.仅包含几个不同值的列
  2.表中仅包含几行

注意:
1.查询时减少使用*返回全部列,不要返回不需要的列
select studentname from student; --快,要什么查询什么

2.WHERE子句中有多个条件表达式,包含索引的表达式应置于其他条件表达式之前
select studentname from student where c=3 and a=1 and b=2 ;

3.避免在order by子句中使用表达式
...order by sum(stdentresult)desc;

4.索引技术是数据库自动使用的,一个表格中存在一个索引就够了
--一本书,一个目录

posted @ 2020-07-23 22:11  弹弹大魔王  阅读(15)  评论(0编辑  收藏  举报