索引

1.数据库对象:用户,表,约束,视图,序列,函数,存储过程,游标,触发器,索引
2.索引
 索引的作用:给数据库中的数据建立目录结构(没有索引也行,但是速度会很慢)
好处:提高数据的检索速度。(首先查找索引,在根据索引查找内容,相当于查两次)
 3.数据库中的索引的类型:
  ----1.唯一索引:在表中加入主键,数据库自动建立唯一索引
          根据主键定位到数据库中的每一行(索引相当于目录,主键就相当于图书的页码,只要表中确定主键,就会自动产生索引,以后找到索引就是直接先找到这一页。)
 ----2.位图索引bitmap:相当于先分类了
          (这是个树结构,例如根据商品的类型一层一层往下找,最后找到自己想要的商品,例如:家电-->冰箱-->海尔冰箱,这样找到海尔冰箱)
          ----聚簇索引:(相当于字典的按照拼音查询)目录的数据和内容的数据是一致的(例如目录是从a到z,而内容中的汉字的排列顺序就是从字母为a开始到z)
          ---非聚簇索引:(相当于字典的按笔画查询)目录的数据和内容的数据是不一致的      
     4.数据的索引的结构:  
        组成:数据库中包括两个部分,一个是索引库,一个是数据库
        索引库里的内容:索引(相当于索引的内容,也就是表中的某一列,也就是数据的内容标签)和这个索引在磁盘中的位置(相当于目录的地址,也就是页码) 
        数据库中的内容:就是表,表中的某一列将来作为索引
        当数据库内容更新,数据库也更新
      5.数据库的维护:当表建立了主键,oracle帮程序员自己维护索引库,当对数据库中的数据进行增删改的时候会自动更新索引库。
        有了索引之后,数据的检索过程是,先检索索引库,在直接查找数据库对应的数据
      6.数据库优化主要是对查询进行优化,优化就是建立索引库

 

 

 第二:来自百度文库:

第一个人:索引的作用就在于,为某个字段建立了索引之后,查询这个字段里面的数据的时候,效率更高,也就是快, 比如 create index abc on stu(age); 为stu表的age字段建立了索引,那么查询时,select * from stu where age > 10; 这个时候效率就高,主要体现在where语句,where age > 10 ,将age 作为查询的条件,age又加了索引所以高。 索引使数据库程序无需对整个表进行扫描,就可以在其中找到所需数据,也就是当进行查询时,系统先搜索索引,从中找到数据的指针,再直接通过指针,直接定位到数据上,所以快。 缺点: 还有就是需要注意的,索引是查的效率高了,但是在表中插入或更新数据时,将有额外的操作来维护索引,所以其他的效率低了,还有占用存储空间,还有不要建立过多的索引,过多索引引起反作用!


第二个人:加快查询速度,唯一索引可以确定唯一性等等,但不是索引越多越好
 对于查询表越多速度越快,对于经常要更新的表,如果多了,反而会慢,因为要插入之前,先要扫描下索引


第三个人:你查字典,是从第一页开始往后翻呢?还是会按 拼音/部首 索引 查找?

 


第四个人:数据库会给表里的索引生成索引页 类似字典的目录 加快查询的效率. 不用全表扫描了`. 缺点就是当插入时当索引页不够的话 需要有索引页的IO开销

第五个人:把数据库看作一本书,把索引看作书的目录,这样查找就比较方便,快捷了


第六个人:索引的优缺点
1、表的主键、外键必须有索引;2、数据量超过300的表应该有索引;3、经常与其他表进行连接的表,在连接字段上应该建立索引;4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;5、索引应该建在选择性高的字段上;6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:A、正确选择复合索引中的主列字段,一般是选择性较好的字段;B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;8、频繁进行数据操作的表,不要建立太多的索引;9、删除无用的索引,避免对执行计划造成负面影响;以上是一些普遍的建立索引时的判断依据。一言以蔽之,索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值