What is Index?索引是什么?

索引

数据库引入了索引用户对数据库最频繁的操作是进行数据查询。一般情况下,数据库在进行查询操作时需要对整个表进行数据搜索。当表中的数据很多时,搜索数据就需要很长的时间,这就造成了服务器的资源浪费。为了提高检索数据的能力,数据库引入了索引机制。有关“索引”的比喻从某种程度上,可以把数据库看作一本书,把索引看作书的目录,通过目录查找书中的信息,显然较没有目录的书方便、快捷。 数据库索引实际是什么?(两部分组成)索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引在表中的角色一个表的存储是由两部分组成的,一部分用来存放表的数据页面,另一部分存放索引页面。索引就存放在索引页面上,索引高效原理通常,索引页面相对于数据页面来说小得多。当进行数据检索时,系统先搜索索引页面,从中找到所需数据的指针,再直接通过指针从数据页面中读取数据。索引的分类在SQL Server 的数据库中按存储结构的不同将索引分为两类:簇索引(Clustered Index)和非簇索引(Nonclustered Index)。 簇索引对表的物理数据页中的数据按列进行排序,然后再重新存储到磁盘上,即簇索引与数据是混为一体,的它的叶节点中存储的是实际的数据。由于簇索引对表中的数据一一进行了排序,因此用簇索引查找数据很快。但由于簇索引将表的所有数据完全重新排列了,它所需要的空间也就特别大,大概相当于表中数据所占空间的120% 。表的数据行只能以一种排序方式存储在磁盘上,所以一个表只能有一个簇索引。 非簇索引具有与表的数据完全分离的结构,使用非簇索引不用将物理数据页中的数据按列排序。非簇索引的叶节点中存储了组成非簇索引的关键字的值和行定位器。行定位器的结构和存储内容取决于数据的存储方式。如果数据是以簇索引方式存储的,则行定位器中存储的是簇索引的索引键;如果数据不是以簇索引方式存储的,这种方式又称为堆存储方式(Heap Structure),则行定位器存储的是指向数据行的指针。非簇索引将行定位器按关键字的值用一定的方式排序,这个顺序与表的行在数据页中的排序是不匹配的。由于非簇索引使用索引页存储因此它比簇索引需要更多的存储空间且检索效率较低但一个表只能建一个簇索引,当用户需要建立多个索引时就需要使用非簇索引了。
relative links:

http://www.chinaitlab.com/www/news/article_show.asp?id=7606http://www.windowsitpro.com/SQLServer/Article/ArticleID/8410/8410.htmlhttp://www.vckbase.com/document/viewdoc/?id=1307http://www.20cn.net/ns/wz/soft/data/20040111171601.htmhttp://www.ddvip.net/database/mssql/index/46.htm

时间: 2024-11-03 09:00:38

What is Index?索引是什么?的相关文章

删除-急!!!!index;索引超出范围。必须为非负

问题描述 急!!!!index;索引超出范围.必须为非负 protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "shanchu") //如果单击的是"选修"按钮 { int index = Convert.ToInt32(e.CommandArgument.ToString()); //取出选修课程所在的行索引 Da

从数据存放的角度分析INDEX索引总结

测试表结构:  代码如下 复制代码 CREATE TABLE TB1 (     ID INT IDENTITY(1,1),     C1 INT,     C2 INT ) 1. 聚集索引(Clustered index) 聚集索引可以理解为一个包含表中除索引键外多有剩余列的包含索引,为保证在DELETE/UPDATE操作的正确性,如果聚集索引未声明为唯一(UNIQUE),则系统会聚集索引键增加一个NULLABLE的INT类型标识列(UNIQUIFIER)以保证记录唯一性. 唯一聚集索引: C

MongoDB数据库index索引的用法和作用

索引最大的作用就是提高query的查询性能,如果没有索引,mongodb需要scan整个collection的所有的documents,并筛选符合条件的document,如果有索引,那么query只需要遍历index中有限个索引条目即可,况且index中的条目是排序的,这对"order  by"操作也非常有利. 索引:特殊的数据结构,存储表的数据的一小部分以实现快速查询 优点: 1.大大减少了服务器需要扫描的数据量 2.索引可以帮助服务器避免排序或使用临时表 3.索引可以将随机io转换

oracle index 索引总结

1.之前的总结 关于索引的概念:http://blog.csdn.net/changyanmanman/article/details/7097318 关于索引组织表:http://blog.csdn.net/changyanmanman/article/details/7326505 索引段使用技巧:http://blog.csdn.net/changyanmanman/article/details/7270361 索引跳跃式扫描:http://blog.csdn.net/changyanm

gradview中index索引超出范围问题

问题描述 后台代码:namespaceWebApplication1{publicpartialclassAltertable:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){GridView1.DataSource=GetData();GridView1.DataBind();}}publicDataViewGetData(){SqlConnectioncon=newSqlCo

sql入门教程:create index创建索引

create index创建索引, 我们先来看看语法吧. CREATE INDEX index_name ON table_name (column_name) 创建唯一索引 SQL语法指数创建一个独特的指数上就座.重复值是不允许使用:   CREATE UNIQUE INDEX index_name ON table_name (column_name)   我们来对person的man表创建sex 索引例子吧.   CREATE INDEX PIndex ON Persons (LastNa

sql创建表索引 create index()语句

sql创建表索引 create index()语句 mssql server 方法 语法: create [索引类型] index 索引名称 on 表名(列名) with fillfactor = 填充因子值0~100 go 实例 create nonclustered index ix_test_tname --创建一个非聚集索引 on test(tname)  --为test表的tname字段创建索引 with fillfactor = 30 --填充因子为30% go select * f

位图索引(Bitmap Index)——索引共用

  位图索引区别于传统B*树索引有两个结构特点:其一是叶子节点上是一个可能的索引列取值对应一个叶子节点.另一个就是叶子节点上通过一个位图向量表示对应行是否取定这个索引值.   使用位图向量记录对应行的取值情况不仅可以带来存储空间上的节省,而且可以借助计算机位图运算的快速特性来提高索引结果利用率.下面我们通过模拟情况来进行分析.   Bitmap Index模拟说明   假设存在数据表T,有两个数据列A和B,取值如下.   序号 A B 1 L 1 2 T 2 3 L 2 4 M 1   对两个数

一个例子与InnoDB索引的几个概念

1.一个简单的sql语句问题     假设当前我们有一个表记录用户信息,结构如下:     a)      表结构 CREATE TABLE `u` (   `id` int(11) NOT NULL DEFAULT '0′,   `regdate` int(1) unsigned,   -..   PRIMARY KEY (`id`),   KEY `regdate` (`regdate`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk 说明:1) 由于需要按照注册时