`

索引学习

阅读更多
SQL语句-创建索引
语法:
CREATE [索引类型] INDEX 索引名称
ON 表名(列名)
WITH FILLFACTOR = 填充因子值0~100
GO



USE 库名
GO
IF EXISTS (SELECT * FROM SYSINDEXES WHERE NAME='IX_TEST_TNAME')--检测是否已经存在IX_TEST_TNAME索引
DROP INDEX TEST.IX_TEST_TNAME--如果存在则删除

--创建索引
CREATE NONCLUSTERED INDEX IX_TEST_TNAME --创建一个非聚集索引
ON TEST(TNAME)  --为TEST表的TNAME字段创建索引
WITH FILLFACTOR = 30 --填充因子为30%
GO


eg
create index lpIndex on t_leave(leaveProcInst)

SELECT * FROM TEST(INDEX = IX_TEST_TNAME) WHERE TNAME = 'A' --指定按‘IX_TEST_TNAME’索引查询

总结:
      1.什么是索引:数据库中的索引是某个表中一列或多列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
  2.分类:
     唯一索引(UNIQUE):不允许两行具有相同的索引值(创建了唯一约束,系统将自动创建唯一索引)
     主键索引:主键索引要求主键中的每个值是唯一的,(创建主键自动创建主键索引)
     聚集索引(CLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序相同,表中只能包含一个聚集索引,主键列默认为聚集索引
     非聚集索引(NONCLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序不匹配,表中可以有249个非聚集索引
    3.创建索引的标准:用于频繁搜索的列;用于对数据进行排序的列
注意:如果表中仅有几行,或列中只包含几个不同的值,不推荐创建索引,因为SQL Server 在小型表中用索引搜索数据所花的时间比逐行搜索更长。





实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别:

其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。如果您翻完了所有以“a”开头的部分仍然找不到这个字,那么就说明您的字典中没有这个字;同样的,如果查“张”字,那您也会将您的字典翻到最后部分,因为“张”的拼音是“zhang”。也就是说,字典的正文部分本身就是一个目录,您不需要再去查其他目录来找到您需要找的内容。

我们把这种正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。

如果您认识某个字,您可以快速地从自动中查到这个字。但您也可能会遇到您不认识的字,不知道它的发音,这时候,您就不能按照刚才的方法找到您要查的字,而需要去根据“偏旁部首”查到您要找的字,然后根据这个字后的页码直接翻到某页来找到您要找的字。但您结合“部首目录”和“检字表”而查到的字的排序并不是真正的正文的排序方法,比如您查“张”字,我们可以看到在查部首之后的检字表中“张”的页码是672页,检字表中“张”的上面是“驰”字,但页码却是63页,“张”的下面是“弩”字,页面是390页。很显然,这些字并不是真正的分别位于“张”字的上下方,现在您看到的连续的“驰、张、弩”三字实际上就是他们在非聚集索引中的排序,是字典正文中的字在非聚集索引中的映射。我们可以通过这种方式来找到您所需要的字,但它需要两个过程,先找到目录中的结果,然后再翻到您所需要的页码。

我们把这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。

通过以上例子,我们可以理解到什么是“聚集索引”和“非聚集索引”。

分享到:
评论

相关推荐

    oracle的索引学习

    总之,Oracle的索引学习涵盖了从索引创建、选择合适的索引类型、理解数据操作对索引的影响,到使用Autotrace和DBMS_XPLAN进行性能分析等多个方面。深入理解和实践这些知识点,能帮助我们更好地管理和优化Oracle...

    asp.net 索引学习

    【ASP.NET索引学习】主要关注的是数据库设计中主键和索引的关系,以及它们对系统性能的影响。在数据库管理中,索引是提高查询效率的关键工具,它通过创建指向数据页的指针来加速数据查找。 在SQL Server中,索引的...

    SQLServer的复合索引学习.docx

    复合索引,也称为组合索引,是指在一个索引中包含多个列,相比于单一索引,它可以在某些特定查询场景下提供更快的检索速度。 单一索引,顾名思义,是在单个列上创建的索引。用户可以通过在多个列上创建索引来构造...

    oracle索引学习初步

    本文将深入探讨Oracle索引的学习初步,帮助读者理解其原理、类型、创建与管理,以及如何优化查询。 一、索引原理 索引就像是书籍的目录,允许我们快速定位到所需信息,而非逐页翻阅。在Oracle数据库中,索引通过...

    oracle的索引初步学习.doc

    ### Oracle的索引初步学习 #### 一、Oracle索引概览 索引在Oracle数据库中扮演着极其重要的角色,它是提高数据检索速度的关键技术之一。简单来说,索引类似于书籍中的目录,可以帮助快速定位数据的位置,从而显著...

    给开发童鞋的MySQL索引学习漫画

    通过以上内容的学习,我们不仅了解了MySQL索引的基本概念和工作原理,还掌握了如何合理地设计和维护索引,这对于提高数据库性能和整体系统的运行效率至关重要。希望每位开发者都能够掌握这些知识,在实际工作中灵活...

    Oracle学习笔记(索引)

    Oracle学习笔记(索引),有具体的代码案例,创建索引,删除索引,重建索引等等

    千字文笔画索引目录.pdf

    6. **汉字学习技巧**:通过笔画索引学习汉字,可以提高学习效率,尤其适合初学者和需要扩大词汇量的人。 7. **汉字文化**:汉字不仅是文字,也是中国文化的重要载体,通过千字文可以了解中国古代的文化背景和思想...

    oracle索引

    oracle 索引学习,包括如何创建索引,如何利用索引来优化数据库,使数据库更加快. 是菜鸟学习的好书

    MySQL中的联合索引学习教程

    联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 ...

    Lucene5学习之增量索引(Zoie)

    总结起来,Lucene5学习之增量索引(Zoie)涉及到的关键技术点包括: 1. 基于Lucene的增量索引解决方案:Zoie系统。 2. 主从复制架构:Index Provider和Index User的角色。 3. 数据变更追踪:通过变更日志实现增量索引...

    mysql索引学习教程

    MySQL索引是数据库管理系统中用来加速数据检索的关键技术。索引可以显著提升查询速度,减少数据扫描量,尤其是在大数据量的表中。本教程主要关注MySQL中的两种索引类型:哈希索引(Hash Index)和B树索引(BTree ...

    数据库非聚集索引 聚集索引 模式 索引

    数据库是存储和管理数据的核心工具,它通过高效的数据组织方式来提供...通过深入学习《非聚集索引.docx》、《聚集索引.docx》和《索引模式.docx》等文档,可以更全面地了解这些概念并应用于实际的数据库管理工作中。

    全面学习分区表及分区索引

    通过学习《三思笔记》中的全面学习分区表及分区索引,你可以深入了解这些概念,掌握如何在实际项目中应用它们,以实现高效的数据管理与查询优化。这份资料将详细讲解分区表的设计原则、索引的创建与管理,以及在不同...

    mysql索引介绍学习

    MySQL索引介绍学习 MySQL索引是一种数据结构,用于帮助MySQL高效获取数据。索引的本质是一种排序的数据结构,可以快速查找数据。MySQL官方定义:索引(Index)是帮助MySQL高效获取数据的数据结构。 索引存在于哪里...

    数据库索引设计和优化

    数据库索引设计与优化是数据库管理系统中至关重要的一个环节,它直接影响到数据查询...通过学习《数据库索引设计与优化》这样的专业书籍,我们可以深入理解这些原理,并将其应用于实际工作,提升数据库系统的整体效能。

    全面学习分区表及分区索引二

    全面学习分区表及分区索引二全面学习分区表及分区索引二

    lucene索引优化多线程多目录创建索引

    通过对“lucene_multiThreadIndex”压缩包的学习,你将掌握如何在Lucene中实现多线程索引,从而提高大型数据集的索引构建速度。通过实践,你可以更好地理解和应用这些技术,优化你的信息检索系统。

Global site tag (gtag.js) - Google Analytics