什么是数据库索引 有哪些类型和特点
有效优化VPS性能,提高VPS服务器运行速度,除了合理配置WEB服务器外,更多的是需要我们能够很好的优化网站程序及网站数据库,网站数据库的优化最为基础的优化措施就是建立数据库索引了,这里就介绍一下,什么是数据库索引?有哪些类型和特点?
⑴,什么是数据库索引?
数据库索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。在数据库中,索引的含义与日常意义上的“索引”一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象。
①一些情况下,索引还可用于避免排序操作;
②对于非聚集索引,有些查询甚至可以不访问数据页;
③索引可以避免全表扫描。多数查询可以仅扫描少量索引页及数据页,而不是遍历所有数据页;
④聚集索引可以避免数据插入操作集中于表的最后一个数据页。
当然,虽然数据库索引可以有效提高数据库数据的查询速度,但是也会导致数据库系统更新数据的性能下降,因为大部分数据更新需要同时更新索引。
⑵,数据库索引的类型:
数据库索引好比是一本书前面的目录,能加快数据库的查询速度。根据数据库的功能,可以在数据库设计器中创建三种索引:唯一索引、主键索引和聚集索引。尽管唯一索引有助于定位信息,但为获得最佳性能结果,建议改用主键或唯一索引。
①聚集索引,表数据按照索引的顺序来存储的。对于聚集索引,叶子结点即存储了真实的数据行,不再有另外单独的数据页;
②非聚集索引,表数据存储顺序与索引顺序无关。对于非聚集索引,叶结点包含索引字段值及指向数据页数据行的逻辑指针,该层紧邻数据页,其行数量与数据表行数据量一致。
在一张表上只能创建一个聚集索引,因为真实数据的物理顺序只可能是一种。如果一张表没有聚集索引,那么它被称为“堆集”(Heap)。这样的表中的数据行没有特定的顺序,所有的新行将被添加的表的末尾位置。
⑶,数据库索引的基本特点:
建立索引的目的是加快对表中记录的查找或排序。为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。数据库索引就是为了提高表的搜索效率而对某些字段中的值建立的目录。数据库索引是建立在数据库表中的某些列的上面。在创建数据库索引的时候,应该考虑在哪些列上可以创建索引,在哪些列上不能创建索引。一般来说,应该在这些列上创建索引。
通过对于数据库索引知识和其基本特点的了解,不难发现,建立和使用数据库索引,对于提供数据库系统整体性能有着极为有利的作用,能够极为有效的加快数据库数据库的读取速度,但同时,也存在着一定的弊端,数据库索引的创建和维护,以及存储不仅会耗费大量的时间和精力,同时也会极为消耗VPS服务器的硬盘空间等资源,因此,对于大型数据库的维护,我们还需要谨慎使用数据库索引。
相关推荐
-
pymongo为mongodb数据库添加索引的方法
本文实例讲述了pymongo为mongodb数据库添加索引的方法.分享给大家供大家参考.具体实现方法如下: from pymongo import ASCENDING, DESCENDING posts.create_index([("date", DESCENDING), ("author", ASCENDING)]) 返回: u'date_-1_author_1' 希望本文所述对大家的Python程序设计有所帮助.
-
Oracle数据库中建立索引的基本方法讲解
怎样建立最佳索引? 1.明确地创建索引 create index index_name on table_name(field_name) tablespace tablespace_name pctfree 5 initrans 2 maxtrans 255 storage ( minextents 1 maxextents 16382 pctincrease 0 ); 2.创建基于函数的索引 常用与UPPER.LOWER.TO_CHAR(date)等函数分类上,例: create index
-
oracle数据库索引失效
今天一个同事突然问我索引为什么失效.说实在的,失效的原因有多种: 但是如果是同样的sql如果在之前能够使用到索引,那么现在使用不到索引,以下几种主要情况: 1. 随着表的增长,where条件出来的数据太多,大于15%,使得索引失效(会导致CBO计算走索引花费大于走全表) 2. 统计信息失效 需要重新搜集统计信息 3. 索引本身失效 需要重建索引 下面是一些不会使用到索引的原因 索引失效 1) 没有查询条件,或者查询条件没有建立索引 2) 在查询条件上没有使用引导列 3) 查询
-
远程数据库的表超过20个索引的影响详细解析
昨天同事参加了一个研讨会,有提到一个案例.一个通过dblink查询远端数据库,原来查询很快,但是远端数据库增加了一个索引之后,查询一下子变慢了. 经过分析,发现那个通过dblink的查询语句,查询远端数据库的时候,是走索引的,但是远端数据库添加索引之后,如果索引的个数超过20个,就会忽略第一个建立的索引,如果查询语句恰好用到了第一个建立的索引,被忽略之后,只能走Full Table Scan了. 听了这个案例,我查了一下,在oracle官方文档中,关于Managing a Distributed
-
mysql数据库索引损坏及修复经验分享
mysql表索引被破坏的问题及解决 下午上班,惊闻我的dedecms的网站出问题了,访问一看,果然全屏报错,检查mysql日志,错误信息为: Table '.\dedecmsv4\dede_archives' is marked as crashed and should be repaired 提示说cms的文章表dede_archives被标记有问题,需要修复.于是赶快恢复历史数据,上网查找原因.最终将问题解决.解决方法如下: 找到mysql的安装目录的bin/myisamchk工具,在命令
-
什么是数据库索引 有哪些类型和特点
有效优化VPS性能,提高VPS服务器运行速度,除了合理配置WEB服务器外,更多的是需要我们能够很好的优化网站程序及网站数据库,网站数据库的优化最为基础的优化措施就是建立数据库索引了,这里就介绍一下,什么是数据库索引?有哪些类型和特点? ⑴,什么是数据库索引? 数据库索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息.在数据库中,索引的含义与日常意义上的"索引"一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象. ①
-
基于MongoDB数据库索引构建情况全面分析
前面的话 本文将详细介绍MongoDB数据库索引构建情况分析 概述 创建索引可以加快索引相关的查询,但是会增加磁盘空间的消耗,降低写入性能.这时,就需要评判当前索引的构建情况是否合理.有4种方法可以使用 1.mongostat工具 2.profile集合介绍 3.日志 4.explain分析 mongostat mongostat是mongodb自带的状态检测工具,在命令行下使用.它会间隔固定时间获取mongodb的当前运行状态,并输出.如果发现数据库突然变慢或者有其他问题的话,首先就要考虑采用
-
基于B-树和B+树的使用:数据搜索和数据库索引的详细介绍
B-树 1 .B-树定义 B-树是一种平衡的多路查找树,它在文件系统中很有用. 定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树:⑴树中每个结点至多有m 棵子树:⑵若根结点不是叶子结点,则至少有两棵子树: ⑶除根结点之外的所有非终端结点至少有[m/2] 棵子树:⑷所有的非终端结点中包含以下信息数据: (n,A0,K1,A1,K2,-,Kn,An)其中:Ki(i=1,2,-,n)为关键码,且Ki<Ki+1, Ai 为指向子树根结点的指针(i=0,1,-,n),且指针Ai-1 所指子
-
数据库索引的知识点整理小结,你所需要了解的都在这儿了
数据库索引,相信大家都不陌生吧. 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息.作为辅助查询的工具,合理的设计索引能很大程度上减轻db的查询压力,db我们都知道,是项目最核心也是最薄弱的地方,如果压力太大很容易产生故障,造成难以预计的影响.所以,不管是日常开发还是面试,索引这一块知识体系都是必须掌握的. 当然,虽说是必须掌握,但索引的知识点很多,很多初学者经常会遗漏,这也是我为什么想写这篇知识点总结的原因,既是给读者的分享,也是给自己一次全面的复习,
-
MySQL索引的各种类型
什么是索引? 索引是数据库存储引擎用于快速查找到指定数据的一种数据结构. 可以用新华字典做类比:如果新华字典中对每个字的详细解释是数据库中表的记录,那么按部首或拼音等排序的目录就是索引,使用它可以让我们快速查找的某一个字详细解释的位置. 在MySQL中,存储引擎也是用了类似的方法,先在索引中找到对应的值,然后再根据匹配的索引值找到对应表中记录的位置. 面试中为什么问索引? 之所以在索引在面试中经常被问到,就是因为:索引是数据库的良好性能表现的关键,也是对查询能优化最有效的手段.索引能够轻易地把查
-
MySQL数据库索引的弊端及合理使用
目录 合理利用索引 1.普通索引的弊端 2.主键索引的陷阱 3.联合索引的矛与盾 4.前缀索引的短小精悍 5.唯一索引的快与慢 6.不要盲目加索引 7.索引失效那些事 索引优化 1.change buffer 2.索引下推 3.刷新邻接页 4.MRR 最后 一个好的索引对数据库系统尤其重要,索引可以说是数据库中的一个大心脏了,如果说一个数据库少了索引,那么数据库本身存在的意义就不大了,和普通的文件没什么两样.今天来说说MySQL索引,从细节和实际业务的角度看看在MySQL中B+树索引好处,以及我
-
MySQL 数据库 索引和事务
目录 1. 索引 1.1 概念 1.2 作用 1.3 索引的原理 1.3.1 减少磁盘的访问次数是构建索引的核心思想 1.3.2 B+ 树适用实现索引的底层 1.4 适用场景 1.5 使用语句 1.5.1 查看索引 1.5.2 创建索引 1.5.3 删除索引 2. 事务 2.1 概念 2.2 为什么使用事务 2.3 四大属性 2.3.1 原子性 2.3.2 一致性 2.3.3 持久性 2.3.4 隔离性 2.4 使用方法 1. 索引 1.1 概念 索引是为了加速对表中数据行的检索而创建的一种分散
-
MySQL数据库索引以及失效场景详解
目录 1. MySQL索引概述 1.1 索引的概念 1.2 索引的特点 1.3 索引的分类 1.4 索引的使用场景 2. 索引失效场景 2.1 索引失效9种场景 2.2 索引失效场景总结 3. 索引失效验证 3.1 全值匹配 3.2 最佳左前缀 3.3 索引计算 3.4 索引范围:索引列上不能有范围查询 3.5 索引覆盖:尽量使用覆盖索引 3.6 不等: 使用不等于(!= 或者 <>)的时候 3.7 null:字段的is not null 与is null 3.8 like:like的前后模糊
-
MySQL数据库索引原理及优化策略
目录 1 索引 索引概念 索引作用 索引的使用场景 2 索引分类 B树索引和B+树索引区别 3 索引操作 创建主键索引 唯一索引的创建 普通索引的创建 查询索引 删除索引 索引创建原则 1 索引 索引概念 索引是一种特殊的文件,包含着对数据表里所有记录的引用指针.可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现. 索引作用 数据库中的表.数据.索引之间的关系,类似于书架上的图书.书籍内容和书籍目录的关系,索引所起的作用类似书籍目录,可用于快速定位.检索数据.索引可以
-
浅谈数据库索引的作用及原理
数据库索引是为了增加查询速度而对表字段附加的一种标识.很多人机械的理解索引的概念,认为增加索引只有好处没有坏处.其实远不是那样的,这里将其介绍尽量详细些. 首先明白为什么索引会增加速度,DB在执行一条Sql语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合.如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明显增加查询的速度.那么在任何时候都应该加索引么?这里有几个反例:1.如果每次都需要取到所有表记录,无论
随机推荐
- Cross-domain 策略文件详解
- VBS读取注册表的两种方法
- PHP编实现程动态图像的创建
- js获得参数的getParameter使用示例
- PHP保存session到memcache服务器的方法
- asp.net常用正则表达式
- MySQL数据库备份以及常用备份工具集合
- Android三种方式实现ProgressBar自定义圆形进度条
- javascript实现的HashMap类代码
- 创建无表格网站的原因和原则 译文
- 为什么使用框架 使用框架的优缺点
- 关于Ruby on Rails视图编写的一些建议
- PowerShell创建Byte数组例子
- ASP.NET基于Ajax的Enter键提交问题分析
- jQuery 1.2.x 升級 1.3.x 注意事项
- 让Win2008+IIS7+ASP.NET支持10万并发请求
- c#使用process.start启动程序报错解决方法
- C++中delete和delete[]的区别说明
- JAVA如何获取客户端IP地址和MAC地址
- Android仿直播特效之点赞飘心效果