# 索引:加快查询的(类似书的目录) 索引类型:默认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.索引技术是数据库自动使用的,一个表格中存在一个索引就够了
--一本书,一个目录