当前位置:首页 » 电脑资讯 » 为什么要建立工程文件索引

为什么要建立工程文件索引

发布时间: 2022-07-11 00:24:46

⑴ 为什么数据库表要建立索引

索引是以表列为基础的数据库对象。索引中保存着表中排序的索引列,并且纪录了索引列在数据库表中的物理存储位置,实现了表中数据的逻辑排序。通过索引,可以加快数据的查询速度和减少系统的响应时间;可以使表和表之间的连接速度加快。 用SQL建立索引: 为了给一个表建立索引,启动任务栏SQL Sever程序组中的ISQL/w程序。进入查询窗口后,输入下面的语句: CREATE [UNIQUE] [CLUSER] INDEX ON (); UNIQUE 表明此索引的每一个索引值只对应唯一的数据记录 CLUSTER 表明要建立的是聚簇索引(指索引项的顺序与表中记录的物理顺序一致) 例:CREATE CLUSER INDEX Stuname ON Student(Sname); 在student表的sname列建立一个聚簇索引,student中记录按照sname值的升序排列 参考资料: <

⑵ 时候为什么要建立索引

在一个或者一些字段需要频繁用作查询条件,并且表数据较多的时候,创建索引会明显提高查询速度,因为可由全表扫描改成索引扫描。(无索引时全表扫描也就是要逐条扫描全部记录,直到找完符合条件的,索引扫描可以直接定位)
索引并不是越多越好,太多索引会占用很多的索引表空间,甚至比存储一条记录更多。

⑶ 什么是索引文件为什么要引入多级索引

什么是索引文件?为什么要引入多级索引?索引文件是一个文件的内容提要。要引入多级索引文件主要是为了检索方便,快速查找到文件。

⑷ 什么是索引为什么要建立索引并举例说明.(以某一具体的DBMS为例)

索引是表示数据的另一种方式,它提供的数据顺序不同于数据在磁盘上的物理存储顺序。索引的特殊作用是在表内重新排列记录的物理位置。索引可建立在数据表的一列上,或建立在表的几列的组合上。

回想一下图书馆中,存放着一架一架的图书。假设要找一本书,图书管理员视必要一架一架的寻找,直到找到想要的那本书为止。这样的查找肯定费时费力,那么管理员可以将所有的图书标题按字母分类建立索引卡片,按字母顺序放在不同的办公抽屉中,这样一架一架查找图书的过程就变成了在办公桌前抽屉中查询索引卡片了,很容易得到有关这本书的信息。

再进一步设想,图书管理员很勤快,他不仅按照图书标题字母分类,而且还按作者姓名和出版社分别建立了另外的索引卡片,这个过程将给借阅者在检索图书信息时以更大的灵活性。因此在一个数据表中是可以建立多个索引的。

在数据库中,对无索引的表进行查询一般称为全表扫描。全表扫描是数据库服务器用来搜寻表的每一条记录的过程,直到所有符合给定条件的记录返回为止。这个操作可以比作在图书馆中查书,从第一个书架的第一本书开始,浏览每一本书,直到发现所要的书为止。为了进行高效查询,可以在数据表上针对某一字段建立索引,由于该索引包括了一个指向数据的指针,数据库服务器则只沿着索引排列的顺序对仅有一列数据的索引进行读取(只建立一个索引)直至索引指针指向相应的记录上为止。由于索引只是按照一个字段进行查找,而没有对整表进行遍历,因此一般说来索引查找比全表扫描的速度快。

那么,是不是使用索引查询一定比全表扫描的速度快呢?答案是否定的。如果查询小型数据表(记录很少)或是查询大型数据表(记录很多)的绝大部分数据,全表扫描更为实用。例如,查询“性别”字段,其值只能是“男或女”,在其上建立索引的意义就不大,甚至不允许在布尔型、大二进制型(备注型、图像型等)上建立索引。

示例:http://www.diylsoft.com/diylsoft/html/manual/DBQuery/IndexSummarize.htm
聚簇索引:
http://ke..com/view/1028053.html?wtp=tt

⑸ 为什么要建立索引

数据库索引是为了增加查询速度而对表字段附加的一种标识。见过很多人机械的理解索引的概念,认为增加索引只有好处没有坏处。
这里想把之前的索引学习笔记总结一下:
首先明白为什么索引会增加速度,DB在执行一条Sql语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明显增加查询的速度。那么在任何时候都应该加索引么?这里有几个反例:1、如果每次都需要取到所有表记录,无论如何都必须进行全表扫描了,那么是否加索引也没有意义了。2、对非唯一的字段,例如“性别”这种大量重复值的字段,增加索引也没有什么意义。3、对于记录比较少的表,增加索引不会带来速度的优化反而浪费了存储空间,因为索引是需要存储空间的,而且有个致命缺点是对于update/insert/delete的每次执行,字段的索引都必须重新计算更新。
那么在什么时候适合加上索引呢?我们看一个Mysql手册中举的例子,这里有一条sql语句:
SELECTc.companyID,c.companyNameFROMCompaniesc,UseruWHEREc.companyID=u.fk_companyIDANDc.numEmployees>=0ANDc.companyNameLIKE'%i%'ANDu.groupIDIN(SELECTg.groupIDFROMGroupsgWHEREg.groupLabel='Executive')
这条语句涉及3个表的联接,并且包括了许多搜索条件比如大小比较,Like匹配等。在没有索引的情况下Mysql需要执行的扫描行数是77721876行。而我们通过在companyID和groupLabel两个字段上加上索引之后,扫描的行数只需要134行。在Mysql中可以通过ExplainSelect来查看扫描次数。可以看出来在这种联表和复杂搜索条件的情况下,索引带来的性能提升远比它所占据的磁盘空间要重要得多。
那么索引是如何实现的呢?大多数DB厂商实现索引都是基于一种数据结构——B树。因为B树的特点就是适合在磁盘等直接存储设备上组织动态查找表。B树的定义是这样的:一棵m(m>=3)阶的B树是满足下列条件的m叉树:
1、每个结点包括如下作用域(j,p0,k1,p1,k2,p2,...ki,pi)其中j是关键字个数,p是孩子指针
2、所有叶子结点在同一层上,层数等于树高h
3、每个非根结点包含的关键字个数满足[m/2-1]<=j<=m-1
4、若树非空,则根至少有1个关键字,若根非叶子,则至少有2棵子树,至多有m棵子树

⑹ 为什么要引入索引分配方式其主要问题是什么

索引节点,其英文为 Inode,是 Index Node 的缩写。索引节点是整个 Linux
文件系统的基础。存储于文件系统上的任何文件都可以用索引节点来表示。举一个例子来说,假设有一个老图书馆里面有一本登记簿,上面记录着馆内的书名及存放

位置,比如在哪一间的第几排存放着哪一本书,以及书的作者是谁。在这里,记录着一本书的那一行就是索引节点。索引节点以同样的方式来存储对象,我们会在下
面学习。

在 Linux 系统中,文件系统主要分为两部分,一部分为元数据(metadata),另一部分为数据本身。元数据,换句话说,就是“包含了与数据有关信息的数据”。索引节点就管理着文件系统中元数据的部分。

索引节点基础知识

如上所述,文件系统中的任何一个文件或目录都与一个索引节点相对应。每个索引节点都是一个数据结构,存储着目标数据的如下信息:

文件大小(以字节为单位)
(存放文件的)设备标识符
(文件所有者的)用户标识符
用户组标识符
文件模式(所有者、用户组及其他人对于文件的读取有怎样的权限)
扩展属性(如 ACL)
文件读取或修改的时间戳
链接数量(指向该文件的硬链接数,记住,软链接不计算在内)
指向存储该内容的磁盘区块的指针
文件分类(是普通文件、目录还是特殊区块设备)
文件占用的区块数量

Linux 文件系统从来不存储文件创建时间,许多人都不清楚这一点。

一个典型的索引数据看起来会是像下面这样:

# stat 01

Size:Blocks:1816IO Block:4096regular file

Device:803h/2051dInode:Links:1

Access:(0644/-rw-r--r--)Uid:(0/root)Gid:(0/root)

Access:2012-09-0701:46:54.-0500

Modify:2012-04-2706:22:02.-0500

Change:2012-04-2706:22:02.-0500

索引节点是在何时并以怎样的方式创建的?

索引节点的创建与正在使用的文件系统有关。一些文件系统在创建时就创建了索引节点,故其索引节点的数量有限。而一些如 JFS 和 XFS 等系统也在文件系统创建时创建索引节点,但使用动态节点分配,并按需扩大索引节点的数量,因此可以避免所有索引节点用完的情况。

当读取文件时都发生了什么?

当用户试图读取文件或与该文件相关的信息时,他会使用文件名称。但是,实质上这个文件名称首先映射为存储于目录表中的索引点节号码。通过该索引节点号码又读取到相对应的索引节点。索引节点号码及相对应的索引节点存放于映射表(Inode table)中。

索引节点指针结构

上面已经解释过,索引节点只存储元数据信息,其中包括真正的数据存储的区块的信息。下面就来解释一下索引节点指针结构。
如这篇维基网络上面的文章解释的那样,这个结构可能会有 11 到 13 个指针,但大多数文件系统会以 15 个指针的形式来存储数据结构。这 15 个指针包括:

直接指向文件数据区块的 12 个指针,称为直接指针(direct pointer)。
一个单独非直接指针(singly indirect pointer),指向一个由多个指针构成的区块,后者的指针又指向文件数据区块。
一个双重非直接指针(doubly indirect pointer),指向一个由多个指针构成的区块,后者的指针又指向一个由多个指针构成的区块,这一区块的指针又指向文件数据的区块。
一个三重非直接指针(triply indirect pointer),指向一个由多个指针构成的区块,后者的指针又指向一个由多个指针构成的区块,其指针又指向另一个由多个指针构成的区块,这一区块的指针又指向文件数据的区块。

热点内容
为什么一咳嗽眼睛就能看见金星 发布:2025-05-15 11:57:40 浏览:322
运动手环为什么这么便宜 发布:2025-05-15 11:57:39 浏览:782
为什么电脑右键没有n卡 发布:2025-05-15 11:56:15 浏览:936
为什么女人不喜欢一夫两妻制 发布:2025-05-15 11:51:17 浏览:564
35岁天天晚上失眠为什么 发布:2025-05-15 11:51:10 浏览:978
米家智能开关为什么没有其它颜色 发布:2025-05-15 11:31:46 浏览:619
天下3为什么有的角色是小孩子 发布:2025-05-15 11:27:15 浏览:813
眼睛睁着不眨为什么会发酸 发布:2025-05-15 11:23:24 浏览:995
为什么男友总是说没时间 发布:2025-05-15 11:06:59 浏览:712
狗狗为什么吃完东西还会就吐了 发布:2025-05-15 10:56:10 浏览:357