Oracle数据库索引有什么背景、现状和意义
发布网友
发布时间:2022-04-21 21:41
我来回答
共2个回答
热心网友
时间:2022-04-09 10:17
索引分为好多种类型,它的存在意义就是快速定位数据位置,因为一张很大的表百万条及以上的数据量才有必要建索引,首先你要先弄懂索引的基本结构是什么,是怎么工作的;它的结构就是一条数据对应一个rowid,通过rowid信息直接访问相关数据块里的数据,这就大大减小了磁盘扫描的操作时间,因为大量从磁盘读取数据然后再筛选符合条件的数据需要很长的时间,也影响了其他数据库操作效率(抢占不必要的cpu和内存资源);就是说从一张大表里只查询一条或者是几条数据是最有必要创建索引的,否则意义不大
热心网友
时间:2022-04-09 11:35
索引的类型 A)聚集索引,表数据按照索引的顺序来存储的。对于聚集索引,叶子结点即存储了真实的数据行,不再有另外单独的数据页。
B)非聚集索引,表数据存储顺序与索引顺序无关。对于非聚集索引,叶结点包含索引字段值及指向数据页数据行的逻辑指针,该层紧邻数据页,其行数量与数据表行数据量一致。
在一张表上只能创建一个聚集索引,因为真实数据的物理顺序只可能是一种。如果一张表没有聚集索引,那么它被称为“堆集”(Heap)。这样的表中的数据行没有特定的顺序,所有的新行将被添加的表的末尾位置。
数据库索引的作用和优点缺点
为什么要创建索引呢?这是因为,创建索引可以大大提高系统的性能。
第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。
第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
也许会有人要问:增加索引有如此多的优点,为什么不对表中的每一个列创建一个索引呢?这种想法固然有其合理性,然而也有其片面性。虽然,索引有许多优点, 但是,为表中的每一个列都增加索引,是非常不明智的。这是因为,增加索引也有许多不利的一个方面。
第一,创建索引和维护索引要耗费时间,这种时间随着数据 量的增加而增加。
第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
索引是建立在数据库表中的某些列的上面。因此,在创建索引的时候,应该仔细考虑在哪些列上可以创建索引,在哪些列上不能创建索引。一般来说,应该追问我问的是背景 现状和意义,你说的这都是我知道的