参考:http://txf2004.iteye.com/blog/1729935
参考:http://guoyankun.iteye.com/blog/1765898
参考:http://yanqingluo.iteye.com/blog/1781671
参考:http://huoli.iteye.com/blog/456799
参考:http://oracledba.iteye.com/blog/448579
概念:
使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。
在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。
优点:
1.大大加快数据的检索速度;
2.创建唯一性索引,保证数据库表中每一行数据的唯一性;
3.加速表和表之间的连接;
4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。
索引的缺点:
1.索引需要占物理空间。建立索引,系统要占用大约为表的1.2倍的硬盘和内存空间来保存索引。
2.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。
使用索引原则:
在大表上建立索引才有意义。
在where子句或是连接条件上经常饮用的列上建立索引。
索引的层次不要超过4层。
如果表主要是提供查询,那么在经常查询的字段上建立索引。
作为通用规则,只有当经常查询索引列中的数据时,才需要在表上创建索引。
可以基于数据库表中的单列或多列创建索引。多列索引使您可以区分其中一列可能有相同值的行。
经常被用来搜索数据记录的字段
尽量不要为数据内容重复率很高的字段创建索引,它所带来的效益很少
数据记录越多,索引提高数据访问的效率的幅度就越明显
确定索引的有效性:
1.检查查询的 WHERE 和 JOIN 子句。在任一子句中包括的每一列都是索引可以选择的对象。
2.对新索引进行试验以检查它对运行查询性能的影响。
3.考虑已在表上创建的索引数量。最好避免在单个表上有很多索引。
4.检查已在表上创建的索引的定义。最好避免包含共享列的重叠索引。
5.检查某列中唯一数据值的数量,并将该数量与表中的行数进行比较。比较的结果就是该列的可选择性,这有助于确定该列是否适合建立索引,如果适合,确定索引的类型。
6.查询操作中的order by 语句的数据排序,group by 语句的数据分组,连接表
索引的分类:
1.普通索引(INDEX):这是最基本的索引类型,它没有唯一性之类的限制。创建普通索引的关键字是INDEX。create index 索引名 on 表名(字段名,。。。);
2.唯一性索引(UNIQUE):在一个表上可以创建多个,索引值不能重复。允许有空值。create unique index 索引名 on表名(字段名,。。。)
3.主键索引(PRIMARY KEY):在一个表上只能创建一个主键,主键字段不能出现重复值,不允许为空。
4.全文索引(FULLTEXT):create fulltext index 索引名 on 表名(字段名,。。。);
5.聚集索引:在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引。
按存储结构分:聚集索引,非聚集索引
按照数据存储方式:可以分为B*树、反向索引、位图索引。
按照索引列的个数分类:可以分为单列索引、复合索引。
按照索引列值的唯一性:可以分为唯一索引和非唯一索引。
此外还有函数索引,全局索引,分区索引,函数索引
逻辑上:
Single column 单行索引
Concatenated 多行索引
Unique 唯一索引
NonUnique 非唯一索引
Function-based函数索引
Domain 域索引
物理上:
Partitioned 分区索引
NonPartitioned 非分区索引
B-tree:
Normal 正常型B树
Rever Key 反转型B树
Bitmap 位图索引
主键一唯一索引的区别:
1 一个表的主键只能有一个,而唯一索引可以建多个。
2 主键可以作为其它表的外键。
3 主键不可为null,唯一索引可以为null。
适合使用聚集索引的情况:
1 如果某字段所包含的有差别的数据的数目有限,则非常适合为该字段创建聚集索引
2 使用betwwen,>,<,>=与<=等运算符返回介于特定范围的数据记录的查询
3 按照特定次序访问的字段
4 返回大量结果集的查询
5 经常用于查询的连接条件或group by语句的字段
6 使用聚集索引搜索为一键列的速度一非常快
索引的结构:
B-tree索引:
基于二叉树的,由分支块(branch block)和叶块(leaf block)组成。
默认情况下大多使用Btree索引,该索引就是通常所见 唯一索引、聚簇索引等等。
适合与大量的增、删、改(OLTP);
不能用包含OR操作符的查询;
适合高基数的列(唯一值多)
典型的树状结构;
每个结点都是数据块;
大多都是物理上一层、两层或三层不定,逻辑上三层;
叶子块数据是排序的,从左向右递增;
在分支块和根块中放的是索引的范围;
但当检查的范围超过表的10%时就不能提高取回数据的性能。
反向索引,降序索引。
Bitmap索引:
适合与决策支持系统,OLAP(联机数据分析)方面,数据仓库方面,或静态数据,不支持行级锁定。
做UPDATE代价非常高;
非常适合OR操作符的查询;
基数比较少的时候才能建位图索引,用于低cardinality列(即列的唯一值除以行数为一个很小的值,接近零)。
位图以一种压缩格式存放,节省存储空间。
在索引中使用位图而不是列值,使用位图作为键值,对于表中的每一数据行位图包含了TRUE(1)、FALSE(0)、或NULL值。
通常在事实表和维表的键之间有很低的集的势(cardinality),使用位图索引,存储更为有效。
位图索引将比较,连接和聚集都变成了位算术运算,大大减少了运行时间,从而得到性能上的极大的提升。
相关推荐
#define INDEX_NUM 1 /*数据库的索引数*/ #define FIELD_NUM 4 /*多域编辑器域数,数据库的字段数*/ #define KEYFIELD 0 /*数据库的关键字段号*/ #define ROWSPACE 2 /*多域编辑器的行间距*/ #define ...
通过企业管理器,可以直接在表上右击,选择“索引/键”选项查看现有索引的信息。使用T-SQL语句查看索引属性的语法如下: ```sql EXEC sp_helpindex @objname = 'table_name'; ``` 这将显示所有与指定表相关的索引...
内容索引:PHP源码,其它类别,数据库操作类 数据库执行语句,可执行查询添加修改删除等任何sql语句,无论做什么都要无私,只有大家好才是真的好,如果使用有任何问题请联系告知本人,交流就是相互促进的大舞台…… ...
数据库索引设计与优化是数据库管理系统中至关重要的一个环节,它直接影响到数据查询的效率、存储空间的使用以及系统的整体性能。在这个主题中,我们将深入探讨数据库索引的基础概念、设计原则、优化策略以及实际应用...
1. **索引优化**:索引是数据库快速查找数据的关键。为频繁用于查询的列创建合适的索引可以显著提高查询速度。然而,过多的索引会增加写操作的开销,因此需要平衡读写需求,合理选择索引类型(如唯一索引、主键索引...
《数据库索引设计与优化》提供了一种简单、高效、通用的关系型数据库索引设计方法。作者通过系统的讲解及大量的案例清晰地阐释了关系型数据库的访问路径选择原理,以及表和索引的扫描方式,详尽地讲解了如何快速地...
数据库索引是数据库管理系统中一个至关重要的概念,它在数据检索和性能优化方面扮演着核心角色。本篇文章将深入探讨索引的实质及其在不同场景下的应用,旨在帮助用户更有效地利用索引来提升数据库操作的速度。 首先...
4. **索引与性能优化**:讲解了索引的概念和作用,如何创建和管理索引以提高查询性能,并讨论了索引的类型,如唯一索引、全文索引、聚集索引和非聚集索引。 5. **存储过程与触发器**:解释存储过程的编写和使用,...
在Java高端培训中,Oracle数据库的设计是至关重要的一个环节,因为它是支撑企业级应用系统稳定运行的基础。Oracle数据库是全球广泛使用的大型关系型数据库管理系统,尤其在处理复杂数据和高并发场景时,其性能和稳定...
active_record_doctor, 确定数据库出现问题之前的问题 Active Record 医生Active Record 医生帮助使数据库保持良好的形状。 目前,它可以:索引取消索引外键检测无关索引检测未索引的deleted_at 列检测缺少的外键...
这门课程深入探讨了数据库系统的高级概念和技术,涵盖了数据模型、查询处理、事务管理、并发控制、存储结构、索引技术等多个关键领域。课后作业是检验学生对这些知识理解程度的重要方式,而提供的标准答案与助教的...
数据库索引设计原则 数据库索引设计原则是 Oracle 数据库管理系统中的一项重要技术,旨在提高数据库的查询效率和性能。以下是数据库索引设计原则的详细解释。 一、基本原则 数据库索引设计原则的基本原则是确保...
数据库索引重建及修复语句
数据库索引是数据库性能优化的重要手段之一。创建索引可以提高查询速度,降低数据库的负载,提高数据的安全性。本文将详细介绍数据库创建索引的原则、分类、创建方法、管理和优化等方面的知识点。 索引的概念和优点...
### 屏蔽数据库表索引的例子 在数据库管理与优化的过程中,索引是提高查询效率的重要工具之一。...然而,这也需要我们在理解和掌握数据库索引原理的基础上,合理运用这些技巧,才能发挥出最大的效果。
高清完整版 数据库索引设计与优化 高清完整版 数据库索引设计与优化
1. **DDL (Data Definition Language 数据定义语言)**:用于定义数据库对象,例如创建、删除和修改数据库、表、视图、索引等。 - **创建 (CREATE)**:用于创建新的数据库或表。 - **删除 (DROP)**:用于删除现有的...
《20计科专升本_20302081028_马金贺_数据库实验报告》这份压缩包文件包含了重要的学习资源,主要聚焦于数据库领域的实践操作和理论理解。作为计算机科学与技术专业升本课程的一部分,这份实验报告无疑对学生深入掌握...
MySQL数据库优化是一个涵盖广泛的主题,包括但不限于查询优化、索引优化、存储引擎选择、数据库架构设计、资源管理和配置调整等多个方面。以下是对这些关键领域的详细解释: 1. **查询优化**:这是数据库优化的核心...
同时,以索引列形式存储BLOB的能力提高了处理二进制大对象的效率。 ### SQLite API概览 SQLite提供了丰富的API,涵盖了数据库的创建、打开、查询、更新和关闭等操作。对于简单的应用程序而言,仅需使用`sqlite3_...