`

索引

 
阅读更多

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、删除无用的索引,避免对执行计划造成负面影响;以上是一些普遍的建立索引时的判断依据。一言以蔽之,索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大。

 

 

 

 

分享到:
评论

相关推荐

    分区索引,本地索引,全局索引的区别

    ### 分区索引—本地索引与全局索引的区别 #### 一、Oracle分区索引概念及分类 在Oracle数据库中,分区索引是针对分区表的一种特殊索引类型,它可以显著提高对于大规模数据集的查询性能。根据索引是否与表的分区...

    索引介绍聚集索引和非聚集索引

    ### 索引介绍:聚集索引与非聚集索引 #### 一、索引的基本概念 在数据库中,索引是一种特殊的文件结构,它的主要目的是为了提高数据检索的速度。索引通过创建一种数据结构(例如B树)来实现这一点,这种结构允许...

    SQL Server 索引结构及其使用(聚集索引与非聚集索引)

    "SQL Server 索引结构及其使用(聚集索引与非聚集索引)" 数据库索引是数据库性能优化的关键技术之一。SQL Server 提供了两种索引:聚集索引(clustered index)和非聚集索引(nonclustered index)。本文将详细介绍...

    oracle在线创建索引和重组索引

    Oracle 在线创建索引和重组索引 Oracle 在线创建索引和重组索引是数据库管理员经常需要处理的问题。在线创建索引可以提高查询性能,而重组索引可以减少索引的碎片化和空间浪费。下面我们将详细介绍在线创建索引和...

    MySql索引详解,索引可以大大提高MySql的检索速度

    打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到...

    InDesignCC2021 中文索引插件

    《InDesign CC 2021 中文索引插件详解》 Adobe InDesign CC 是一款广泛应用于出版行业的专业排版软件,它以其强大的布局设计和类型设置功能而备受赞誉。在复杂的出版项目中,索引是不可或缺的一部分,它帮助读者...

    数据库 创建索引 sql oracle

    根据索引的组织方式和存储结构,索引可以分为聚集索引、非聚集索引、唯一索引和复合索引等。 * 聚集索引:将表中的记录在物理数据页中的位置按索引字段值重新排序,再将重排后的结果写回到磁盘上。每个表只能有一个...

    MySQL Innodb 索引原理详解

    ### MySQL Innodb 索引原理详解 #### 1. 各种树形结构 在深入探讨MySQL Innodb索引之前,我们先了解几种基本的树形数据结构,包括二叉搜索树、B树、B+树以及B*树。 ##### 1.1 搜索二叉树(Binary Search Tree) ...

    SQL Server 索引中include的魅力(具有包含性列的索引)

    SQL Server 索引中 include 的魅力(具有包含性列的索引) SQL Server 索引中 include 的魅力(具有包含性列的索引)是指在非聚集索引中添加非键列,以扩展索引的功能,提高查询性能。通过将非键列添加到非聚集索引...

    数据库索引设计和优化

    4. 聚集索引与非聚集索引:聚集索引中,索引项的值就是数据行的位置,而非聚集索引则有单独的索引页和数据页,需要回表操作。 四、查询优化 1. 使用WHERE子句:避免全表扫描,合理使用索引字段进行筛选。 2. 避免...

    mysql 索引与执行计划

    ### MySQL 索引与执行计划 #### 一、索引与执行计划 ##### 1.1 索引入门 在深入探讨之前,我们首先需要理解什么是索引以及其重要性。 ###### 1.1.1 索引是什么 索引(Index)在MySQL中是一种帮助数据库高效获取...

    oracle约束和索引笔记

    本笔记主要探讨了两个关键概念:约束和索引,这些都是Oracle数据库中的基础但至关重要的元素。 **1. 约束(Constraints)** 约束是Oracle数据库中用于确保数据完整性的规则。它们分为以下几种类型: - **非空约束...

    传奇地图索引修改.zip

    《传奇地图索引修改》是针对游戏《传奇》中地图索引进行优化和调整的工具集合,旨在提供更高效、准确的地图数据管理方案。在这个压缩包中,包含了一个名为“地图索引修改”的核心文件,这通常是编程人员或游戏开发者...

    OSGB模型3MX索引生成工具

    标题中的“OSGB模型3MX索引生成工具”是一个专门用于处理OSGB(Ordnance Survey’s Geospatial Binary)格式的3D地理空间数据的软件。OSGB是一种由英国国家测绘局(Ordnance Survey)开发的数据格式,用于存储三维...

    mysql存储与索引技术

    MySQL 的索引分为两种主要类型:MyISAM 使用非聚集索引,索引与数据分开存储,而 InnoDB 使用聚集索引,索引和数据在同一结构中,因此 InnoDB 的索引支持更快的查找,但不支持全文检索。在索引优化方面,最左前缀...

    oracle不走索引可能原因.docx

    Oracle数据库在执行SQL查询时,有时会选择不使用已经创建的索引,这可能是由于多种因素导致的。以下是一些常见的原因及其详细解释: 1. **INDEX SKIP SCAN**: 当创建了一个组合索引,但是查询只使用了索引的非第一...

    基于Hadoop的分布式索引构建

    分布式索引构建是大数据处理领域中的一个重要环节,它允许在海量数据上提供快速的查询服务。Hadoop作为一个广泛使用的分布式计算框架,为构建分布式索引提供了有力支持。以下是关于基于Hadoop的分布式索引构建的详细...

    oracle、sql数据库批量建索引

    在数据库管理中,索引是提升查询性能的关键要素。Oracle和SQL Server作为两种广泛应用的关系型数据库管理系统,都支持创建和管理索引以优化查询速度。本文将深入探讨这两个数据库系统中如何批量创建和删除索引,以及...

    lucene索引优化多线程多目录创建索引

    本教程主要探讨的是如何利用Lucene进行索引优化,特别是通过多线程和处理多个目录来提高索引创建效率。 首先,我们需要理解Lucene的索引原理。Lucene将文档分解为词项(tokens),并对每个词项创建倒排索引。倒排...

    labview中的数组索引详细讲解

    LabVIEW 中的数组索引详细讲解 LabVIEW 中的数组索引是指在循环结构中自动完成数组元素的索引或累积的过程。这种能力称为自动索引(Auto-indexing)。在 LabVIEW 中,For 循环中自动索引功能是默认启用的,而 While...

Global site tag (gtag.js) - Google Analytics