当前位置:文档之家› 关于索引

关于索引

关于索引
关于索引

有关索引

原理:

SQL Server中的数据是按页(每页容量通常为8KB)存放的,通常,一个数据表的存储是由两部分组成,一部分是存放表的数据页,另一部分是存放表的索引页。当检索数据时,系统先搜索索引页面,从中找到所需数据的指针,然后直接通过指针从数据页面中读取数据,提高数据的访问速度。

使用索引可以提高数据库系统的性能,增强数据的检索速度。建立索引需要占用大量的物理存储空间,因此建立索引时应遵循一定的原则。如:在经常查询的字段列上建立索引,不在重复值比较多、查询较少的列上建立索引等。

什么是索引:

索引是为了加速对表中数据行的检索而创建的一种分散存储结构。针对一个表而建立的,每个索引页面中的行都含有逻辑指针,指向数据表中的物理位置,以便加速检索物理数据。索引的分类:

聚集索引(Clustered Index,也称聚类索引、聚集索引),物理存储按照索引排序,表中数据行的物理存储顺序与索引顺序完全相同。聚集索引由上下两层组成,上层为索引页,包含表中的索引页面,用于数据检索;下层为数据页,包含实际的数据页面,存放着表中的数据。通过聚集索引基于关键字搜索来检索SQL 数据时不需要指针跳动(类似于硬盘上位置的不连续改变)就可以获得相关的数据页,因为叶级聚集索引已经是相关的数据页。

通俗理解:聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。聚集索引要创建在经常搜索或按顺序访问的列上。

非聚集索引(Nnonclustered Index,也称非聚类索引、非簇集索引),物理存储不按照索引排序,它不改变表中数据行的物理存储位置,数据与索引分开存储,通过索引带有的指针与表中的数据发生联系。

通俗理解:非聚集索引与课本中的索引类似。数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置。索引中的项目按索引键值的顺序存储,而表中的信息按另一种顺序存储(由聚集索引规定)。如果在表中未创建聚集索引,则无法保证这些行具有任何特定的顺序。

唯一索引(Unique):唯一索引不允许两行具有相同的索引值。如果现有数据中存在重复的键值,则大多数数据库都不允许将新创建的唯一索引与表一起保存。

提示:创建了唯一约束,将自动创建唯一索引。尽管唯一索引有助于找到信息,但为了获得最佳性能,建议使用主键约束或唯一约束。

主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的,并且不能为空。

提示:SQL Server默认在主键上建立聚集索引。但如果已建有聚集索引,则建立主键时就不带聚集索引,以避免覆盖原有聚集索引。

联系:

聚集索引和非聚集索引是从索引数据存储的角度来区分的;而唯一索引和非唯一索引是从索引取值来区分的。

所以,唯一索引和非唯一索引既可以是聚集索引,也可以是非聚集索引,只要列中的数据是唯一的,就可以在同一张表上创建一个唯一的聚集索引和多个唯一的非聚集索引。

优势与缺点:

聚集索引在插入数据时速度要慢(时间花费在“物理存储的排序”上,就是首先要找到位置然后插入),但在查询数据时要比非聚集索引快。

存储结构:

在SQL Server 2005以前,一个表格是以一个B树或者一个堆(Heap)存放的。SQL Server 2005以后,引入了分区表(Table Partition)的概念。在存储组织上,现在的分区基本上取代了原来表格的概念。一个分区就是一个B树或者一个堆,而一张表格则是一个到多个分区的组合。SQL Server使用下列三种方法之一来组织其分区中的数据或索引页:

1. 用B树存储有聚集索引的表数据页;数据行基于聚集索引键按顺序存储。

2. 堆是没有聚集索引的表;

3. 非聚集索引;非聚集索引与聚集索引有一个相似的B树索引结构,不同的是非聚集索引不影响数据行的顺序。叶级别仅包含索引行,没有数据。

由于索引是通过二叉树来描述的,我们可以这么理解聚集索引:索引的叶节点就是数据节点。而非聚集索引的叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。

如何创建索引:

Create [UNIQUE] [CLUSTERED|NONCLUSTERED] Index index_name On table_name (column_name)[With Fillfactor=x]

?UNIQUE表示唯一索引,可选

?CLUSTERED、NONCLUSTERED表示聚集索引还是非聚集索引,可选

?FILLFACTOR表示填充因子,指定一个0到100之间的值,该值指示索引页填满的空间所占的百分比

?ONLINE = { ON | OFF } 指定在索引操作期间基础表和关联的索引是否可用于查询和数据修改操作。默认值为OFF,表示在索引维护期间不允许修改数据,但允许读操作;设为ON表示索引维护期间,可继续对基础表和索引进行查询或更新。

例如: Create Nonclustered Index IX_friends_id On friends(id)With (fillfactor=90,online=on)On [primary]

索引的优点:

1.创建唯一性索引,保证数据库表中每一行数据的唯一性;

2.大大加快数据的检索速度,这也是创建索引的最主要原因;

3.加速表与表之间的连接,特别是在实现数据的参考完整性方面特别有意义;

4.在使用分组和排序子句进行数据检索时,同样可以减少查询中分组和排序的时间;

5.通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能。

索引的缺点:

1.创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加;

2.建立索引需要占用大量的物理存储空间。除了数据表占数据空间之外,每一个索引还要占用一定的物理空间,若要建立聚集索引,则需要的空间就会更大;

3.当对表中的数据进行增加、删除和修改的时候,索引也要动态地维护,降低了数据的维护速度;

4.操纵数据的命令需要更长的处理时间,因为它们需要对索引进行更新。

创建索引的原则:

使用索引虽然可以提高系统的性能,增强数据的检索速度,但它需要占用大量的物理存储空间,建立索引的一般原则如下:

何时使用聚集索引或非聚集索引:

下面的表总结了何时使用聚集索引或非聚集索引(很重要):

误区:

1、主键就是聚集索引

这种想法是极端错误的,是对聚集索引的一种浪费。虽然SQL Server默认是在主键上建立聚集索引的。

通常,我们会在每个表中都建立一个ID列,以区分每条数据,并且这个ID列是自动增大的,步长一般为1。此时,如果我们将这个列设为主键,SQL Server会将此列默认为聚集索引。这样做有好处,就是可以让您的数据在数据库中按照ID进行物理排序,但我认为这样做意义不大。

显而易见,聚集索引的优势是很明显的,而每个表中只能有一个聚集索引的规则,这使得聚集索引变得更加珍贵。

从我们前面谈到的聚集索引的定义我们可以看出,使用聚集索引的最大好处就是能够根据查询要求,迅速缩小查询范围,避免全表扫描。在实际应用中,因为ID号是自动生成的,我们并不知道每条记录的ID号,所以我们很难在实践中用ID号来进行查询。这就使让ID号这个主键作为聚集索引成为一种资源浪费。其次,让每个ID号都不同的字段作为聚集索引也不符合“大数目的不同值情况下不应建立聚合索引”规则;当然,这种情况只是针对用户经常修改记录内容,特别是索引项的时候会负作用,但对于查询速度并没有影响。

2、只要建立索引就能显著提高查询速度

3、把所有需要提高查询速度的字段都加进聚集索引,以提高查询速度

很多人认为只要把任何字段加进聚集索引,就能提高查询速度,也有人感到迷惑:如果把复合的聚集索引字段分开查询,那么查询速度会减慢吗?

其他注意事项:

索引有助于提高检索性能,但过多或不当的索引也会导致系统低效。因为用户在表中每加进一个索引,数据库就要做更多的工作。过多的索引甚至会导致索引碎片。

索引維護- 重新组织和重新生成索引

1. 为什么要重新生成或组织索引?

对数据执行插入、更新或删除操作,SQL Server 数据库引擎都会自动维护索引。随着时间的推移,这些修改可能会导致索引中的信息分散在数据库中,也就是常说的碎片。

碎片非常多的索引可能会降低查询性能,导致应用程序响应缓慢。

2. 重新生成或组织索引的结果?

使索引中的信息尽量集中,并释放索引空间。

3. 重新生成索引和重新组织索引的区别。

1)重新生成索引可以联机执行,也可以脱机执行。重新组织索引始终联机执行。

2)从效率上来看,一般碎片比例大于30%使用重新生成索引,小于30%大于5%使用重新组织索引,小于5%不必处理。所以在建立维护作业的时候应考虑效率。下面是一个查看

4. 重建聚集索引和非聚集索引有什么不同?

由于非聚集索引的叶层是由索引页而不是由数据页组成,所以重建非聚集索引并不能释放数据页的空间;而聚集索引的页层是由数据页组成,所以重建聚集索引才能释放数据空间。所以在进行DELETE删除数据后必须要重建该表的聚集索引才能是删除数据所占用空间释放。

如何重建或重新生成?

5.

dbcc showcontig(friends)with all_indexes

主要看这项指标:Scan Density [Best Count:Actual Count],比如: 12.70% [17687:139213]

oracle索引基本分类

oracle索引基本分类法分类 逻辑上: Single column 单行索引 Concatenated 多行索引 Unique 唯一索引 NonUnique 非唯一索引 Function-based函数索引 Domain 域索引 物理上: Partitioned 分区索引 NonPartitioned 非分区索引 B-tree: Normal 正常型B树 Rever Key 反转型B树 Bitmap 位图索引 索引结构: B-tree: 适合与大量的增、删、改(OLTP); 不能用包含OR操作符的查询; 适合高基数的列(唯一值多) 典型的树状结构; 每个结点都是数据块; 大多都是物理上一层、两层或三层不定,逻辑上三层; 叶子块数据是排序的,从左向右递增; 在分支块和根块中放的是索引的范围; Bitmap: 适合与决策支持系统; 做UPDATE代价非常高; 非常适合OR操作符的查询; 基数比较少的时候才能建位图索引; 树型结构: 索引头 开始ROWID,结束ROWID(先列出索引的最大范围) BITMAP 每一个BIT对应着一个ROWID,它的值是1还是0,如果是1,表示着BIT 对应的ROWID有值; =============================================== ======================

Oracle的索引主要包含两类:BTree和位图索引。默认情况下大多使用Btree 索引,该索引就是通常所见唯一索引、聚簇索引等等,Btree用在OLTP,加快查询速度。位图索引是Oracle的比较引人注目的地方,其主要用在OLAP(联机数据分析)方面,也就是数据仓库方面用到,目的是在加快查询速度是,节省存储空间。通常情况下,索引都要耗费比较大的存储空间,位图采用了压缩技术实现磁盘空间缩减。Btree用在高基数(即列的数据相异度大),位图用在低基数列。位图索引的基本原理是在索引中使用位图而不是列值。通常在事实表和维表的键之间有很低的集的势(cardinality),使用位图索引,存储更为有效,与B*Tree 索引比较起来,只需要更少的存储空间,这样每次读取可以读到更多的记录,而且与B*Tree索引相比,位图索引将比较,连接和聚集都变成了位算术运算,大大减少了运行时间,从而得到性能上的极大的提升。 在Oracle中如何合理的使用位图索引?以下的几个事项应该考虑。 *如果要使用位图索引,初始化参数STAR_TRANSFORMATION_ENABLED 应该设置为TRUE. *优化模式应该是CBO。对于数据仓库的环境中,总是应该考虑使用CBO (COST-BASEDOPTIMIZER)。 *位图索引应该建立在每一个事实表的外键列上。(这只是一个一般的规则.) 此外,对于数据表中的cardinality如何客观的确定也是一个问题,一万条数据中只包含3个值的集和算是低的了,那么一亿条记录中包含3万条记录算不算低的呢?对于这样的情况,建议几行一下数据的模拟测试,一般来说,在数据仓库环境中,位图索引的性能要好于B*Tree索引。还要注意位图索引不是为OLTP 数据库设计的,不应该在OLTP数据库中大量的使用它,尤其是对那些有更新操作的表。 ==================================================================== ========== B*Tree索引 B*Tree索引是最常见的索引结构,默认建立的索引就是这种类型的索引。B*Tree索引在检索高基数数据列(高基数数据列是指该列有很多不同的值)时提供了最好的性能。当取出的行数占总行数比例较小时B-Tree索引比全表检索提供了更有效的方法。但当检查的范围超过表的10%时就不能提高取回数据的性能。B-Tree索引是基于二叉树的,由分支块(branch block)和叶块(leaf block)组成。在树结构中,位于最底层底块被称为叶块,包含每个被索引列的值和行所对应的rowid。在叶节点的上面是分支块,用来导航结构,包含了索引列(关键字)范围和另一索引块的地址,如图26-1所示。

索引的使用原则

索引的优点:这个显而易见,正确的索引会大大提高数据查询,对结果进行排序、分组的操作效率。 索引的缺点:优点显而易见,同样缺点也是显而易见: 1:创建索引需要额外的磁盘空间,索引最大一般为表大小的1.2倍左右。 2:在表数据修改时,例如增加,删除,更新,都需要维护索引表,这是需要系统开销的。 3:不合理的索引设计非但不能利于系统,反而会使系统性能下降。例如我们在一个创建有非聚集索引的列上做范围查询,此列的索引不会起到任何的优化效果,反而由于数据的修改而需要维护索引表,从而影响了对数据修改的性能。 实际例子:还是拿前两篇文章的学生表来讲吧,要查询成绩在50分以上的学生信息select * from student where score>50。学生表包含了100000行记录,而且学分是随机生成的,这样从数据量以及数据分布上都有一定的保障。 第一种情况:学生表有索引。 1:存在聚集索引,但聚集索引不在学分上,这里只分析学分不是聚集索引的情况。 (1):学分上没有索引。此时SQL会通过聚集索引来查找数据,这点估计大家都会知道。 (2):学分上有索引。这种情况,SQL会使用上学分上的索引吗?这个问题估计不是每个人都能回答正确的。既然学分上有索引,而where中又有此列,理应使用了索引,但实际情况并没有使用索引。因为出现了范围查找,如果一个索引一个索引的比较,在性能上比起直接按聚集索引查找全部数据后再过滤来的差。那学分上的索引什么时候 SQL会优先考虑呢?当score指定为一个具体值时,就能使用学分索引查找了。从下图的SQL执行计

划可以得知。 2:不存在聚集索引。 (1):在学分上没有索引,其它字段有索引,这种情况就会出现表扫描。 (2):在学分上有索引,是否会按照学分上的索引进行查找呢?由于上面的表数据量也不少,一般会认为SQL不会采用表扫描,因为会查找全部记录,但实际情况表明SQL 对于范围查询也行采用表扫描而不是按学生索引查询。我们也可以强制SQL按学分查询,于是有下面的SQL执行计划比较,我们可以清楚的看出,强制使用学分做为索引查询比表搜索

索引与查询性能

第14章索引与查询性能 索引中文词典解释根据一定需要,把书刊中的主要内容或各种题名摘录下来,标明出处、页码,按一定次序分条排列,以供人查阅的资料。如果一本书籍没有目录,要想快速检索出想要查询的资料,就只有逐页查找,这种方式效率极其底下。数据库中的索引也类似于书籍目录相同的功能。 索引是有效使用数据库系统的基础,当表中的数据量较小时,使用索引和不使用索引带来的性能差异不大;但当表中的数据量极大时,就一定需要索引的辅助才能有效的存取数据。 一般索引建立的是否适当,是决定性能好坏的关键。并由于更改索引结构不会影响数据字段的定义,也就是前端程序可以照常存取,因此当上线后的应用程序使用效率比较低的时候,可以尝试建立或优化所以,从而提高应用软件的性能。 SCMDB示例数据库中表的数据量较小,无法演示使用索引带来的效率提升。本章采用微软示例数据库AdventureWorks作为演示数据库。希望通过以下的测试,给读者一个感性认识。 【演示】查询表SalesOrderDetail中销售订单编号在48077-48080范围内的订单编号、产品ID以及订单数量。 【分析】表SalesOrderDetail的记录数为121317,其中Sales前缀为架构名称。通过参数set statistics time on开启统计时间。图14-1所示为在表SalesOrderDetail使用聚集索引后的演示效果,时间执行时间仅仅为1毫秒。图14-2所示为删除聚集索引后的运行时间为27毫秒。表中的数据量越大,使用索引与不使用索引带来的性能上的差异性越大。 图14-1 使用索引进行查询 图14-2 没有使用索引进行查询 14.1 索引的分类 SQL Server中索引分为两种类型:聚集索引(Clustered Index)和非聚集索引(Non Clustered Index),也可称为聚簇索引和非聚簇索引。

TP各部分物料名词索引

■ P r e l i m i n a r y Ve r s i o n □ F i n a l Ve r s i o n Record of Revision

目錄 物理或化學材料類 (5) A (5) B (5) C (6) D (6) E (6) F (6) G (6) H (6) I (6) J (7) K (7) L (7) M (7) N (7) O (7) P (7) Q (8) R (8) S (8) T (8) U (8) V (9) W (9) X (9) Y (9) Z (9) 實驗名稱類 (9) A (9) B (9) C (9) D (9) E (10)

G (10) H (10) I (10) J (10) K (10) L (10) M (10) N (11) O (11) P (11) Q (11) R (11) S (11) T (11) U (12) V (12) W (12) X (12) Y (12) Z (12) 計算機軟件及工程電子類 (12) A (12) B (12) C (12) E (13) F (13) G (13) H (13) I (13) J (13) K (13) L (13) M (14) N (14) O (14) P (14)

R (14) S (14) T (14) U (15) V (15) W (15) X (15) Y (15) Z (15) TP各單位及生產常用名稱 (15) A (15) B (15) C (15) D (16) E (16) F (16) G (16) H (16) I (16) J (17) K (17) L (17) M (17) N (17) O (17) P (17) Q (18) R (18) S (18) T (18) U (18) V (18) W (19) X (19) Y (19) Z (19)

职业兴趣类型及对应的职业索引

表11-1人格类型与职业环境表 类型特征及个人风格行为表现职业环境 实用型特征 顺从、坦率、谦率、自然、坚毅、实 际、有礼、害羞、稳健、节俭、物质。 个人风格 积极、偏好具体非抽象性的工作,基 本上较不具社交性,人际间的互动不 佳。 1.喜爱实用性质的职业或情境,以从事 其所喜好的活动,避免社会性质的职 业或情境。 2.以具体实用的能力解决工作及其它方 面的问题。 3.自觉自己拥有机械和动作的能力,而 较缺乏人际关系方面的能力。 4.重视具体的事物或个人明确的特性, 如金钱、权力、地位等。 具技能性的行为,例如水电、 机械业作员、飞机技师的技 工、摄影师、抄写员及服务 业。 研究型特征 分析、谨慎、批评、好奇、独立、聪 明、内向、条理、谦逊、精确、理性、 保守。 个人风格 有知慧的、抽象的、分析能力佳、独 立,是累进的,且是任务导向的。 1.喜爱研究性质的职业或情境,避免企 业型职业或情境的活动。 2.以研究方面能力解决工作及其它方面 的问题。 3.自觉自己好学、有自信、拥有数学和 科学方面的能力,但缺乏领导的才能。 4.重视科学。 例如化学家、物理学家、数 学家等科学家;或是如实验 室技师、计算机程序设计师 及电子工人等技术人。 艺术型特征 复杂、想象、冲动、独立、直觉、无 秩序、情绪化、理想化、不顺从、有 创意、富有表情、不实际。 个人风格 想象力丰富、重视唯美主义、偏好经 由艺术的自我表达、相当独立且外向 的。 1.喜爱艺术性质的职业或情境,避免传 统性质的职业或情境。 2.以艺术方面的能力解决工作及其它方 面的问题。 3.自觉富有表达能力、直觉、独立、具 创意、不顺从、无秩序等特征拥有艺 术与音乐方面的能力。 4.重视审美的特质。 如雕刻家、画家、设计师的 艺术性工作者;及如音乐老 师、乐团指挥、音乐家等音 乐工作者;或是如编辑、作 家及评论家等文学工作者。 社会型特征 合作、友善、慷慨、助人、仁慈、负 责、圆融、善社、交善解人意、服务 他人、理想主义、富洞察力。 个人风格 偏好社会互动、出现于社交场合、关 心社会问题、宗教、社区服导向,并 对教育活动感兴趣。 1.喜爱社会性的职业或情境,避免实用 型的职业或情境。 2.以社交方面的能力解决工作及其它方 面的问题。 3.自觉喜欢帮助别人、了解别人、有教 导别人的能力,但缺乏机械与科学能 力。 4.视社会与伦理的活动与问题。 如教师、教育行政人员及大 学教授等教育工作者;如社 工人员、员社会学家、谘商 师及专业护士等社会福利工 作者。 企业型特征 冒险、野心、独断、冲动、乐观、自 信、追求享乐、精力充沛、善于社交、 获取注意、知名度高。 个人风格 外向、积极、冒险性,偏好领导的角 色、主控、说服,以及应用良好的言 1.喜欢企业性质的职业或环境,避免研 究性质的职业或情境。 2.以企业方面的能力解决工作或其它方 面的问题。 3.自觉有冲劲、自信、善社交、知名度 高、有领导与语言能力,缺乏科学能力。 如人事、生产及务经理等管 理工作者;各种销售的职位, 例如寿险推销、房地产以及 汽车销售人员。

索引的优点和缺点

一、为什么要创建索引呢(优点)? 这是因为,创建索引可以大大提高系统的性能。 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。 二、建立方向索引的不利因素(缺点) 也许会有人要问:增加索引有如此多的优点,为什么不对表中的每一个列创建一个索引呢?这种想法固然有其合理性,然而也有其片面性。虽然,索引有许多优点,但是,为表中的每一个列都增加索引,是非常不明智的。这是因为,增加索引也有许多不利的一个方面。 第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。 第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。 三、创建方向索引的准则 索引是建立在数据库表中的某些列的上面。因此,在创建索引的时候,应该仔细考虑在哪些列上可以创建索引,在哪些列上不能创建索引。 一般来说,应该在这些列上创建索引。 第一,在经常需要搜索的列上,可以加快搜索的速度; 第二,在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构; 第三,在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度; 第四,在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的; 第五,在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间; 第六,在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。 同样,对于有些列不应该创建索引。一般来说,不应该创建索引的的这些列具有下列特点: 第一,对于那些在查询中很少使用或者参考的列不应该创建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。 第二,对于那些只有很少数据值的列也不应该增加索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。 第三,对于那些定义为text, image和bit数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少。 第四,当修改性能远远大于检索性能时,不应该创建索引。这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因此,当修改性能远远大于检索性能时,不应该创建索引。

部分教科研信息索引(第80期)

部分教科研信息索引(第80期) 科研处、图书馆编2008 年5月 教育教学理论与实践 ?如何让教师的每节课达到预定目标《上海教育》2008.4B. ?“以学论教”课堂教学评价的实践探索《人民教育》2008.08. ?深入思考系统整理充分发挥规划的引领作用——上海市实验学校创建上海市实验性示范性高中的实践与思考《素质教育大参考》2008.4A. ?推进教师专业发展为教改实验提供保障《素质教育大参考》2008.4A. ?五分钟效应——唤起学生激情投入课堂《素质教育大参考》2008.4A. ?学案在教学中的应用《素质教育大参考》2008.4A. ?蔡格尼克效应与课堂教学中的留白《基础教育》2008.3. 学校德育 ?关于心理健康教育和思政教育有机结合的思考《素质教育大参考》2008.4B. ?细微之处见台湾德育《素质教育大参考》2008.4B. ?从班级日常生活中提炼班会主题《基础教育》2008.3. 教育技术 ?信息技术融入中学历史探究式教学的思考《中国电化教育》2007.4. ?语文教学中运用多媒体的思考《中国电化教育》2007.4. 政治 ?中学生理财教育的探究《素质教育大参考》2008.4A. ?运用导读教学法培养政治阅读能力《思想政治课教学》2008.3. ?政治课教学中培养学生创造力的“三不唯”《中学政治教学参考》2008.4. 历史 ?中学历史课程资源开发与利用的调查《课程教材教法》2008.4. ?*从学生的参与看历史课堂教学有效性 *浅谈历史课堂教学中问点的选择和设置均《中学历史教学参考》2008.4. 地理 ?*谈高中地理探究学习中的知识铺垫 *初中地理教学中人文精神的培养 *在地理教学活动中培养学生空间思维能力均《地理教学》2008.4. ?地理教研与课题研究的有效整合《地理教学》2008.4. ?*地理探究式学习的教师思考 *中学地理与灾害教育浅议 *地理教学培养学生地理素养初探均《地理教育》2008.2. ?*中学地理活动课教学模式分析 *地理课堂中生成性教学资源的有效利用均《中学地理教学参考》2008.4. 语文 ?语文课程内容建构刍议《课程教材教法》2008.4. ?语文教学改革的一个着眼点与四个立足点《基础教育》2008.3. ?“铺”写作文训练与核心思维方式的六大关系《基础教育》2008.3. ?在留白处泼墨添彩《基础教育》2008.3. ?用好教材致力于基本能力提高《中学语文教学参考》2008.4. ?课堂教学效率:新课程实施亟待解决的现实问题《中学语文教学》2008.4. ?“合作教学”在语文教学中的思考与实践《语文教学通讯》2008.4B. ?知人论世:解读古典诗词的起点《语文教学通讯》2008.4B. ?对有效推进说课活动发展的思考《语文建设》2008.4.

索引的使用规则与性能调优

Oracle 索引的使用规则与性能调优 索引分类 逻辑上: Unique 唯一索引 物理上: B-tree: Normal 正常型B树 Bitmap 位图索引 索引结构:B-tree:适合与大量的增、删、改(OLTP);不能用包含OR操作符的查询;适合高基数的列(唯一值多)典型的树状结构;每个结点都是数据块;大多都是物理上一层、两层或三层不定,逻辑上三层;叶子块数据是排序的,从左向右递增;在分支块和根块中放的是索引的范围;Bitmap:适合与决策支持系统;做UPDATE代价非常高;非常适合OR 操作符的查询;基数比较少的时候才能建位图索引;树型结构:索引头开始ROWID,结束ROWID(先列出索引的最大范围)BITMAP每一个BIT对应着一个ROWID,它的值是1还是0,如果是1,表示着BIT对应的ROWID有值; B*tree索引的话通常在访问小数据量的情况下比较适用,比如你访问不超过表中数据的5%,当然这只是个相对的比率,适用于一般的情况。bitmap的话在数据仓库中使用较多,用于低基数列,比如性别之类重复值很多的字段,基数越小越好。 索引就好象一本字典的目录。凭借字典的目录,我们可以非常迅速的找到我们所需要的条目。数据库也是如此。凭借Oracle数据库的索引,相关语句可以迅速的定位记录的位置,而不必去定位整个表。虽然说,在表中是否创建索引,不会影响到Oracle数据库的使用,也不会影响数据库语句的使用。这就好像即使字典没有目录的话,用户仍然可以使用它一样。可是,若字典没有目录,那么可想而知,用户要查某个条目的话,其不得不翻遍整本字典。数据库也是如此。若没有建立相关索引的话,则数据库在查询记录的时候,不得不去查询整个表。当表中的记录比较多的时候,其查询效率就会很低。所以,合适的索引,是提高数据库运行效率的一个很好的工具。不过,并不是说表上的索引越多越好。过之而不及。故在数据库设计过程中,还是需要为表选择一些合适的索引。宁缺勿滥,这是建立索引时的一个遵循标准。在理论上,虽然一个表可以设置无限的索引。但是,数据库管理员需要知道,表中的索引越多,维护索引所需要的开销也就越大。每当数据表中记录有增加、删除、更新变化的时候,数据库系统都需要对所有索引进行更新。故数据库表中的索引绝对不是多多益

提高Oracle性能--如何走索引

一、问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是SQL语句的优化。对于海量数据,劣质SQL语句和优质SQL 语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就可,而是要写出高质量的SQL语句,提高系统的可用性。 在多数情况下,Oracle使用索引来更快地遍历表,优化器主要根据定义的索引来提高性能。但是,如果在SQL语句的where子句中写的SQL代码不合理,就会造成优化器删去索引而使用全表扫描,一般就这种SQL语句就是所谓的劣质SQL语句。在编写SQL语句时我们应清楚优化器根据何种原则来删除索引,这有助于写出高性能的SQL语句。 二、SQL语句编写注意问题 下面就某些SQL语句的where子句编写中需要注意的问题作详细介绍。在这些where子句中,即使某些列存在索引,但是由于编写了劣质的SQL,系统在运行该SQL语句时也不能使用该索引,而同样使用全表扫描,这就造成了响应速度的极大降低。 1. IS NULL 与IS NOT NULL 不能用null作索引,任何包含null值的列都将不会被包含在索引中。即使索引有多列这样的情况下,只要这些列中有一列含有null,该列就会从索引中排除。也就是说如果某列存在空值,即使对该列建索引也不会提高性能。 任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。 2. 联接列 对于有联接的列,即使最后的联接值为一个静态值,优化器是不会使用索引的。我们一起来看一个例子,假定有一个职工表(employee),对于一个职工的姓和名分成两列存放

SQL索引详解(优化数据库)

SQL索引一步到位 SQL索引在数据库优化中占有一个非常大的比例,一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他的神秘面纱。 1.1 什么是索引? SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间 下面举两个简单的例子: 图书馆的例子:一个图书馆那么多书,怎么管理呢?建立一个字母开头的目录,例如:a开头的书,在第一排,b开头的在第二排,这样在找什么书就好说了,这个就是一个聚集索引,可是很多人借书找某某作者的,不知道书名怎么办?图书管理员在写一个目录,某某作者的书分别在第几排,第几排,这就是一个非聚集索引 字典的例子:字典前面的目录,可以按照拼音和部首去查询,我们想查询一个字,只需要根据拼音或者部首去查询,就可以快速的定位到这个汉字了,这个就是索引的好处,拼音查询法就是聚集索引,部首查询就是一个非聚集索引. 看了上面的例子,下面的一句话大家就很容易理解了:聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续。就像字段,聚集索引是连续的,a后面肯定是b,非聚集索引就不连续了,就像图书馆的某个作者的书,有可能在第1个货架上和第10个货架上。还有一个小知识点就是:聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。 1.2 索引的存储机制 首先,无索引的表,查询时,是按照顺序存续的方法扫描每个记录来查找符合条件的记录,这样效率十分低下,举个例子,如果我们将字典的汉字随即打乱,没有前面的按照拼 音或者部首查询,那么我们想找一个字,按照顺序的方式去一页页的找,这样效率有多底,大家可以想象。 聚集索引和非聚集索引的根本区别是表记录的排列顺序和与索引的排列顺序是否一致,其实理解起来非常简单,还是举字典的例子:如果按照拼音查询,那么都是从a-z的,是 具有连续性的,a后面就是b,b后面就是c,聚集索引就是这样的,他是和表的物理排列顺序是一样的,例如有id为聚集索引,那么1后面肯定是2,2后面肯定是3,所以说这样的搜索顺序的就是聚集索引。非聚集索引就和按照部首查询是一样是,可能按照偏房查询的时候,根据偏旁‘弓’字旁,索引出两个汉字,张和弘,但是这两个其实一个在100页,一个在1000页,(这里只是举个例子),他们的索引顺序和数据库表的排列顺序是不一样的,这个样的就是非聚集索引。 原理明白了,那他们是怎么存储的呢?在这里简单的说一下,聚集索引就是在数据库 被开辟一个物理空间存放他的排列的值,例如1-100,所以当插入数据时,他会重新排列 整个整个物理空间,而非聚集索引其实可以看作是一个含有聚集索引的表,他只仅包含原表中非聚集索引的列和指向实际物理表的指针。他只记录一个指针,其实就有点和堆栈差不多的感觉了

索引类型

(2)索引类型 索引类型 (3)索引文件的类型单索引文件(.idx)

结构复合索引文件 复合索引文件(.cdx) 非结构复合索引文件 (4)建立索引文件命令 ①单索引 index on <索引表达式> to <索引文件名> 例:index on 总分to XSCJ.idx for 总分>=345 注:只能建立升序索引和唯一索引。 ②复合索引 Index on <索引表达式> tag <索引名> of <索引文件名.cdx> 例:index on 姓名tag XM for 住址=”北京” 注:可以建立升序和降序索引,并接候选索引和唯一索引。如果要建立非结构复合索引,必须要加上of 字句。 注:在①②的最末尾如果加上additive表示先前打开的索引文件仍保持打开状态,若省略则自动关闭。

(5)打开索引文件 建立索引文件时,索引文件均自动打开。若重新打开,只有结构复合索引文件会随着相关表打开而自动打开,而单索引和非结构复合索引不会自动打开。 命令格式:set index to <索引文件名> [additive] 或者use <表名> index <索引文件名> (6)设置当前索引文件 复合索引文件中有多个索引标识,任一时刻起主要作用的只有一个,我们把它叫做当前索引,而它对应的索引文件叫做主控索引文件。 命令格式:set order to 索引文件名.idx ▏tag 索引名of <索引文件名.cdx> (7)更新索引 命令格式:reindex (8)删除索引 单索引可以直接删除,复合索引用命令删除。 命令格式:delete tag <索引标志名> ▏all [of <索引文件名.cdx]

数据库索引(约束种类)

以下几种约束、并一一列举: 1.主键(primary key)约束: 要对一个列加主键约束的话,这列就必须要满足的条件就是分空 因为主键约束:就是对一个列进行了约束,约束为(非空、不重复) 以下是代码要对一个列加主键,列名为id,表名为emp 格式为: alter table 表格名称add constraint 约束名称增加的约束类型(列名) 例子: alter table emp add constraint ppp primary key (id) ———————————————————————————————— 2.check约束: 就是给一列的数据进行了限制 比方说,年龄列的数据都要大于20的 表名(emp)列名(age) 格式: alter table 表名称add constraint 约束名称增加的约束类型(列名) 例子: alter table emp add constraint xxx check(age>20) ______________________________________________________________________ 3.unique约束: 这样的约束就是给列的数据追加的不重复的约束类型 格式: alter table 表名add constraint 约束名称约束类型(列名) 比方说可以给ename列加个unique,让ename列的数据不重复 例子: alter table emp add constraint qwe unique(ename) ———————————————————————————————— 4.默认约束: 意思很简单就是让此列的数据默认为一定的数据 格式: alter table 表名称add constraint 约束名称约束类型默认值)for 列名

索引的种类

索引的种类 根据数据库的功能,可以在数据库设计器中创建三种索引:唯一索引、主键索引和聚集索引。 唯一索引: 唯一索引是不允许其中任何两行具有相同索引值的索引。当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据。例如,如果在employee 表中职员的姓(lname) 上创建了唯一索引,则任何两个员工都不能同姓。 不允许具有索引值相同的行,从而禁止重复的索引或键值。系统在创建该索引时检查是否有重复的键值,并在每次使用INSERT 或UPDATE 语句添加数据时进行检查。 主键索引: 数据库表经常有一列或列组合,其值唯一标识表中的每一行。该列称为表的主键。在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。当在查询中使用主键索引时,它还允许对数据的快速访问。 聚集索引: 在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引。如果某索引不是聚集索引,则表中行的物理顺序与键值的逻辑顺序不匹配。与非聚集索引相比,聚集索引通常提供更快的数据访问速度。 区别: 1.主键一定是唯一性索引,唯一性索引并不一定就是主键; 2.一个表中可以有多个唯一性索引,但只能有一个主键; 3.主键列不允许空值,而唯一性索引列允许空值。 在oracle中,我们创建一个主键,则同时自动创建了一个同名的唯一索引;删除主键,则主键约束和对应的唯一索引都删除了。这是我们经常见到的现象。发出一个创建主键的sql,oracle其实执行了两步。创建主键约束、创建与之关联的唯一索引。步骤是这样的: 创建主键约束时,检查该主键字段上是否已经存在唯一索引。若不存在,则自动创建同

金蝶K3数据库索引与系统性能优化项目解决方案(具体应用篇)

K3数据库索引及系统性能优化解决方案(具体应用篇) --重建索引速度较慢,请在系统空闲时间进行 DBCC DBREINDEX(t_icitem) DBCC DBREINDEX(t_item) DBCC DBREINDEX(t_itemclass) DBCC DBREINDEX(t_itemright) DBCC DBREINDEX(t_user) DBCC DBREINDEX(t_group) go if not exists(select 1 from sysindexes where name='ix_group_fgroupid') create index ix_group_fgroupid on t_group(fgroupid) go if not exists(select 1 from sysindexes where name='ix_itemright_ftypeid') create index ix_itemright_ftypeid on t_itemright(ftypeid) go 1 SQL Server调整 当用户使用K3系统一段时间以后,发现系统的响应时间越来越长。这种情形往往是由于账套数据库缺乏维护引起的。缺乏维护的数据库会存在过多地碎片、过期的统计、隐含着可能的错误查询结果的数据库的逻辑和物理的不一致性,这些都会直接影响系统的性能。这里介绍解决上述账套数据库性能问题常用的方法。 1.1 使用DBCC语句发现和解决上述问题。 DBCC: 数据库一致性检查器。 打开SQL 查询分析器,执行如下语句。

u DBCC SHOWCONTIG 显示指定表的数据和索引的有关数据碎片的信息DBCC SHOWCONTIG(表名[,索引名]) 在有大的改动的表,引入数据的表,或者引起低效查询的表上使用该语句。 例:DBCC SHOWCONTIG(’T_ITEM’) u DBCC DBREINDEX 重建指定数据库中表的一个或多个索引。 例1:重建某个索引 DBCC DBREINDEX ('T_ITEM', uk_item2, 80) 例2:重建所有索引 DBCC DBREINDEX ('T_ITEM',’’,80) u DBCC SHOW_STATISTICS 显示指定表上的指定目标(例如一个索引名称))的当前分布统计信息。这些统计信息是被SQL Server查询优化器使用的DBCC SHOW_STATISTICS(表名,目标) 例:DBCC SHOW_STATISTICs('t_item','pk_item') u sp_updatestats & UPDATE STATISTICS 更新统计信息; sp_updatestats 对当前数据库中所有用户定义的表运行 UPDATE STATISTICS. 使用UPDATE STATISTICS 语句的时机:在一个空表上创建一个索引,然后在以后应用它。执行TRUNCATE TABLE语句,然后在以后重新应用该表。通过使用FULLSCAN或SAMPLE选项请求明细的索引统计信息。 例1. UPDATE STATISTICS T_ITEM 例2. UPDATE STATISTICS T_ITEM(PK_ITEM) 例 3. USE AIS20011203150410 EXEC sp_updatestats u DBCC CHECKTABLE 检查指定表或索引视图的数据、索引及 text 、ntext 和

民诉法司法解释条文索引及简要解读(证据部分)

民诉法司法解释条文索引及简要解读(证据部分) 陈特 转自微信公众号法客帝国 2015民诉司法解释条文法条索引:《证据规定》、《92民诉意见(已废 止)》及其他 备注 四、证据《92民诉意见(已废止)》第三章证据第九十条当事人对自己提出 的诉讼请求所依据的事实或者 反驳对方诉讼请求所依据的事实,应当提供证据加以证明,但法律另有规定的除外。 在作出判决前,当事人未能提供证据或者证据不足以证明其事实主张的,由负有举证证明责任的当事人承担不利的后果。1、《最高人民法院关于民事诉讼证据的若干规定》 (下称《证据规定》)第二条:当事人对自己提 出的诉讼请求所依据的事实或者反驳对方诉讼请 求所依据的事实有责任提供证据加以证明。 没有证据或者证据不足以证明当事人的事实主张 的,由负有举证责任的当事人承担不利后果。 文字略有调 整。 第九十一条人民法院应当依照下列原则确定举证证明责任的承担,但法律另有规定的除外: (一)主张法律关系存在的当 事人,应当对产生该法律关系的基本事实承担举证证明责任; (二)主张法律关系变更、消灭或者权利受到妨害的当事人,应当对该法律关系变更、消灭或者权利受到妨害的基本事实承担举证证明责任。本条是在吸收理论研究成果和审判实践经验的基 础上,新增加的条文。 本条是关于 举证责任分 配的一般规 则的规定。 第九十二条一方当事人在法庭审理中,或者在起诉状、答辩状、代理词等书面材料中,对于己不利的事实明确表示承认的,另一方当事人无需举证证明。 对于涉及身份关系、国家利益、社会公共利益等应当由人民法院依职权调查的事实,不适用1、《证据规定》第八条:诉讼过程中,一方当事 人对另一方当事人陈述的案件事实明确表示承认 的,另一方当事人无需举证。但涉及身份关系的 案件除外。/对一方当事人陈述的事实,另一方当 事人既未表示承认也未否认,经审判人员充分说 明并询问后,其仍不明确表示肯定或者否定的, 视为对该项事实的承认。/当事人委托代理人参加 诉讼的,代理人的承认视为当事人的承认。但未 经特别授权的代理人对事实的承认直接导致承认 注意:在新 的有关证据 的法律、司 法解释公布 实施前,《证 据规定》与 本解释不矛 盾的条款仍 然适用。

索引的类型主要有

三、填空题 1.SQL Server 2000局部变量名字必须以_________开头,而全局变量名 字必须以_________开头。 2.完整性约束包括______完整性、______完整性、参照完整性和用户定 义完整性。 3.在SQL Server 2000中,数据库对象包括______、______、触发器、过 程、列、索引、约束、规则、默认和用户自定义的数据类型等。 4.索引的类型主要有_ _和_ __。 5.__________是指保证指定列的数据具有正确的数据类型、格式和有效 的数据范围。 6.__________是特殊类型的存储过程,它能在任何试图改变表中由触发 器保护的数据时执行。 7.SQL Server 2000 采用的身份验证模式有________________模式和 ________模式。 8.用户访问SQL Server数据库时,经过了两个_______验证和________验 证安全验证阶段。 9.SQL Server 2000提供的数据库备份方法有_______数据库备份和 ________数据库备份、____________备份和________________备份。 10.________是由一个或多个数据表(基本表)或视图导出的虚拟表。 11._____________用于保证数据库中数据表的每一个特定实体的记录都 是惟一的。 12.索引的类型有______________和非聚集索引。 13._________是已经存储在SQL Server服务器中的一组预编译过的 Transact-SQL语句。 14.触发器定义在一个表中,当在表中执行________、________或delete 操作时被触发自动执行。 15.目前最常用的数据库有层次数据库、_________数据库和_________数 据库,其中_________数据库是目前应用最广泛的一种数据库。

Oracle索引用法大总结,好处与坏处,优点与缺

Oracle索引用法大总结,好处与坏处,优点与缺点二 索引使用的好处与坏处(Oracle) 分类:OracleDB ?创建索引的好处 –帮助用户提高查询速度 –利用索引的唯一性来控制记录的唯一性 –可以加速表与表之间的连接 –降低查询中分组和排序的时间 ?创建索引的坏处 –存储索引占用磁盘空间

–执行数据修改操作(INSERT、UPDATE、DELETE)产生索引维护 ---------------------------------------------------------------------------------------------- 索引是提高数据查询最有效的方法,也是最难全面掌握的技术,因为正确的索引可能使效率提高10000倍,而无效的索引可能是浪费了数据库空间,甚至大大降低查询性能。 索引的管理成本 1、存储索引的磁盘空间 2、执行数据修改操作(INSERT、UPDATE、DELETE)产生的索引维护 3、在数据处理时回需额外的回退空间。 实际数据修改测试: 一个表有字段A、B、C,同时进行插入10000行记录测试 在没有建索引时平均完成时间是2.9秒

在对A字段建索引后平均完成时间是6.7秒 在对A字段和B字段建索引后平均完成时间是10.3秒 在对A字段、B字段和C字段都建索引后平均完成时间是11.7秒 从以上测试结果可以明显看出索引对数据修改产生的影响 索引按存储方法分类 B*树索引 B*树索引是最常用的索引,其存储结构类似书的索引结构,有分支和叶两种类型的存储数据块,分支块相当于书的大目录,叶块相当于索引到的具体的书页。一般索引及唯一约束索引都使用B*树索引。 位图索引 位图索引储存主要用来节省空间,减少ORACLE对数据块的访问,它采用位图偏移方式来与表的行ID号对应,采用位图索引一般是重复值太多的表字段。位图索引在实际密集型OLTP(数据事务处理)中用得比较少,因

面对高考高中物理部分篇目索引

高中物理部分篇目索引 论原始物理问题的教育价值及其启示/ 邢红军,陈清梅//课程·教材·教法(京).—2005,no.1.—p.56 《高中数理化》 在线圈中产生正弦交变电流或电动势的5种方法/ 李宏伟(河南洛阳市新安县第一高级中学) //高中数理化(京).—2005,no.1.—p.29 能量和动量自我检测题/ 安娜(山东东明县一中) //高中数理化(京).—2005,no.1.—p.32 物理审题的关键环节/蔡才福(南京市南京外国语学校) //高中数理化(京).—2005,no.2.—p.7 你会“写”物理吗?—浅述物理表达/牛学勤(山西省长治学院附属太行中学) //高中数理化(京).—2005,no.2.—p.9 高考物理实验题归类导析/陶成龙(浙江省绍兴市高级中学) //高中数理化(京).—2005,no.2.—p.11 2005年高考物理模拟试卷//高中数理化(京).—2005,no.2.—p.26 机械振动典型计算问题归类/袁霈耀(河北廊坊市中国石油天然气管道局中学) //高中数理化(京).—2005,no.3.—p.20 例谈光的本性/唐传胜(江苏灌云县杨集高级中学) //高中数理化(京).—2005,no.3.—p.23 光学综合题归类与解析/艾明国(河北盐山中学) //高中数理化(京).—2005,no.3.—p.25 探究高考选择题的常用解题方法/王金兵(江苏如东县丰里利中学)//高中数理化(京).—2005,no.3.—p.27 热学中微观量的估算/刘岩(甘肃省临洮中学)// //高中数理化(京).—2005,no.3.—p.29 “2005年世界物理年”相关问题关注/姜启时(江苏海门市天补中学) //高中数理化(京).—2005,no.3.—p.31 《物理教学》

相关主题
文本预览
相关文档 最新文档