数据库索引的定义,用途和使用方法

索引其实关键目的是为了加快检索速度而建立的,所以,怎么用索引是数据库系统本身的事情,作为数据库设计或使用者,设计并创建好索引然后体验加上索引后的查询变快的感觉就行了。所以,索引怎么用就变为了“怎么创建合适的索引”

 

一、索引是什么

索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。索引包含由表或视图中的一列或多列生成的键。这些键存储在一个结构(B 树)中,使 SQL Server 可以快速有效地查找与键值关联的行。

表或视图可以包含以下类型的索引

   
* 聚集
          o 聚集索引根据数据行的键值在表或视图中排序和存储这些数据行。索引定义中包含聚集索引列。每个表只能有一个聚集索引,因为数据行本身只能按一个顺序排序。
          o
只有当表包含聚集索引时,表中的数据行才按排序顺序存储。如果表具有聚集索引,则该表称为聚集表。如果表没有聚集索引,则其数据行存储在一个称为堆的无序结构中。
    * 非聚集
          o 非聚集索引具有独立于数据行的结构。非聚集索引包含非聚集索引键值,并且每个键值项都有指向包含该键值的数据行的指针。
          o
从非聚集索引中的索引行指向数据行的指针称为行定位器。行定位器的结构取决于数据页是存储在堆中还是聚集表中。对于堆,行定位器是指向行的指针。对于聚集表,行定位器是聚集索引键。
          o
您可以向非聚集索引的叶级添加非键列以跳过现有的索引键限制(900 字节和 16 键列),并执行完整范围内的索引查询。

聚集索引和非聚集索引都可以是唯一的。这意味着任何两行都不能有相同的索引键值。另外,索引也可以不是唯一的,即多行可以共享同一键值。

每当修改了表数据后,都会自动维护表或视图的索引。

索引和约束

对表列定义了 PRIMARY KEY 约束和 UNIQUE 约束时,会自动创建索引。例如,如果创建了表并将一个特定列标识为主键,则 数据库引擎自动对该列创建 PRIMARY KEY 约束和索引。有关详细信息,请参阅创建索引(数据库引擎)。


二、索引有什么用

与书中的索引一样,数据库中的索引使您可以快速找到表或索引视图中的特定信息。索引包含从表或视图中一个或多个列生成的键,以及映射到指定数据的存储位置的指针。通过创建设计良好的索引以支持查询,可以显著提高数据库查询和应用程序的性能。索引可以减少为返回查询结果集而必须读取的数据量。索引还可以强制表中的行具有唯一性,从而确保表数据的数据完整性。

设计良好的索引可以减少磁盘 I/O 操作,并且消耗的系统资源也较少,从而可以提高查询性能。对于包含 SELECTUPDATEDELETE MERGE 语句的各种查询,索引会很有用。例如,在 AdventureWorks 数据库中执行的查询 SELECT Title, HireDate FROM HumanResources.Employee WHERE EmployeeID = 250。执行此查询时,查询优化器评估可用于检索数据的每个方法,然后选择最有效的方法。可能采用的方法包括扫描表和扫描一个或多个索引(如果有)。

扫描表时,查询优化器读取表中的所有行,并提取满足查询条件的行。扫描表会有许多磁盘 I/O 操作,并占用大量资源。但是,如果查询的结果集是占表中较高百分比的行,扫描表会是最为有效的方法。

查询优化器使用索引时,搜索索引键列,查找到查询所需行的存储位置,然后从该位置提取匹配行。通常,搜索索引比搜索表要快很多,因为索引与表不同,一般每行包含的列非常少,且行遵循排序顺序。

查询优化器在执行查询时通常会选择最有效的方法。但如果没有索引,则查询优化器必须扫描表。您的任务是设计并创建最适合您的环境的索引,以便查询优化器可以从多个有效的索引中选择。SQL Server 提供的数据库引擎优化顾问可以帮助分析数据库环境并选择适当的索引。

三、索引怎么用

索引其实关键目的是为了加快检索速度而建立的,所以,怎么用索引是数据库系统本身的事情,作为数据库设计或使用者,设计并创建好索引然后体验加上索引后的查询变快的感觉就行了。所以,索引怎么用就变为了“怎么创建合适的索引”,以下说明这个问题:

索引设计不佳和缺少索引是提高数据库和应用程序性能的主要障碍。设计高效的索引对于获得良好的数据库和应用程序性能极为重要。为数据库及其工作负荷选择正确的索引是一项需要在查询速度与更新所需开销之间取得平衡的复杂任务。如果索引较窄,或者说索引关键字中只有很少的几列,则需要的磁盘空间和维护开销都较少。而另一方面,宽索引可覆盖更多的查询。您可能需要试验若干不同的设计,才能找到最有效的索引。可以添加、修改和删除索引而不影响数据库架构或应用程序设计。因此,应试验多个不同的索引而无需犹豫。

SQL Server
中的查询优化器可在大多数情况下可靠地选择最高效的索引。总体索引设计策略应为查询优化器提供可供选择的多个索引,并依赖查询优化器做出正确的决定。这在多种情况下可减少分析时间并获得良好的性能。若要查看查询优化器对特定查询使用的索引,请在 SQL Server Management Studio 中的“查询”菜单上选择“包括实际的执行计划”。

不要总是将索引的使用等同于良好的性能,或者将良好的性能等同于索引的高效使用。如果只要使用索引就能获得最佳性能,那查询优化器的工作就简单了。但事实上,不正确的索引选择并不能获得最佳性能。因此,查询优化器的任务是只在索引或索引组合能提高性能时才选择它,而在索引检索有碍性能时则避免使用它。

建议的索引设计策略包括以下任务:

   1.
了解数据库本身的特征。例如,它是频繁修改数据的联机事务处理 (OLTP) 数据库,还是主要包含只读数据的决策支持系统 (DSS) 或数据仓库 (OLAP) 数据库?
   2.
了解最常用的查询的特征。例如,了解到最常用的查询联接两个或多个表将有助于决定要使用的最佳索引类型。
   3.
了解查询中使用的列的特征。例如,某个索引对于含有整数数据类型同时还是唯一的或非空的列是理想索引。筛选索引适用于具有定义完善的数据子集的列。
   4.
确定哪些索引选项可在创建或维护索引时提高性能。例如,对现有某个大型表创建聚集索引将会受益于 ONLINE 索引选项。ONLINE 选项允许在创建索引或重新生成索引时继续对基础数据执行并发活动。
   5.
确定索引的最佳存储位置。非聚集索引可以与基础表存储在同一个文件组中,也可以存储在不同的文件组中。索引的存储位置可通过提高磁盘 I/O 性能来提高查询性能。例如,将非聚集索引存储在表文件组所在磁盘以外的某个磁盘上的一个文件组中可以提高性能,因为可以同时读取多个磁盘。
     
或者,聚集索引和非聚集索引也可以使用跨越多个文件组的分区方案。在维护整个集合的完整性时,使用分区可以快速而有效地访问或管理数据子集,从而使大型表或索引更易于管理。有关详细信息,请参阅已分区表和已分区索引。在考虑分区时,应确定是否应对齐索引,即,是按实质上与表相同的方式进行分区,还是单独分区。

设计索引。
索引设计是一项关键任务。索引设计包括确定要使用的列,选择索引类型(例如聚集或非聚集),选择适当的索引选项,以及确定文件组或分区方案布置。

#
确定最佳的创建方法。按照以下方法创建索引:

    *
使用 CREATE TABLE ALTER TABLE 对列定义 PRIMARY KEY UNIQUE 约束
      SQL Server
数据库引擎自动创建唯一索引来强制 PRIMARY KEY UNIQUE 约束的唯一性要求。默认情况下,创建的唯一聚集索引可以强制 PRIMARY KEY 约束,除非表中已存在聚集索引或指定了唯一的非聚集索引。默认情况下,创建的唯一非聚集索引可以强制 UNIQUE 约束,除非已明确指定唯一的聚集索引且表中不存在聚集索引。
      还可以指定索引选项和索引位置、文件组或分区方案。
     
创建为 PRIMARY KEY UNIQUE 约束的一部分的索引将自动给定与约束名称相同的名称。

    *
使用 CREATE INDEX 语句或 SQL Server Management Studio 对象资源管理器中的“新建索引”对话框创建独立于约束的索引
     
必须指定索引的名称、表以及应用该索引的列。还可以指定索引选项和索引位置、文件组或分区方案。默认情况下,如果未指定聚集或唯一选项,将创建非聚集的非唯一索引。若要创建筛选索引,请使用可选的 WHERE 子句。

#
创建索引。
要考虑的一个重要因素是对空表还是对包含数据的表创建索引。对空表创建索引在创建索引时不会对性能产生任何影响,而向表中添加数据时,会对性能产生影响。
对大型表创建索引时应仔细计划,这样才不会影响数据库性能。对大型表创建索引的首选方法是先创建聚集索引,然后创建任何非聚集索引。在对现有表创建索引时,请考虑将 ONLINE 选项设置为 ON。该选项设置为 ON 时,将不持有长期表锁以继续对基础表的查询或更新。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库原理与设计》课程设计 (含完整设计资料) 一、超市管理数据库 超市需建立一个管理数据库存储以下信息: *超市信息包括超市代号,超市名,经理名及超市运营开销。 *一个超市内有多个部门,每个部门有部门号、部门主管姓名、地址,电话及每个月的部 门运营开销。 *每个部门有多个员工,每个员工有员工号、姓名、年龄、性别,职位及月工资。 *每个部门销售多种商品,商品有商品号、商品名、规格,采购成本和零售价格、批发价 格。 *商品采购自供货商,供货商有供货商号,供货商名,联系电话,联系地址。 *所有的商品存在商场或仓库中。 *商场有多个仓库,仓库有仓库号,仓库管理姓名、电话及仓库的运营成本。 应完成的主要功能:(1)基础信息管理功能,如超市信息的管理功能,包括录入、修改 、查询、输出超市的信息;部门信息的管理功能,包括录入、修改、查询、输出部门的 信息;还有员工,商品,采购商,仓库等的信息管理功能。(2)超市的进销存功能模块 ,包括进货,销售,库存以及超市盘点等常见功能。 (3)超市的利润统计功能,包括月利润和年利润统计。并能输出各种报表,如员工工资月 报表,年报表;每个部门销售的商品数量的月报表;仓库存储商品数量的月报表;超市 运营开销和部门运营开销的月报表等。 二、开发环境 数据库选用微软的SQL SERVER。开发环境可以选择:(1)Delphi; (2)Visual Basic; (3) C++ builder; (4) Visual C++;(5)Visual C#;(6)自选。只选择其中的一种软件开发工具实现即可。 三、基本要求 (1)完成上面所提及的所有需求 (2)要求撰写不少于2500字符的Word文档。 (3)文档中至少要包括:ER模型图、系统功能图、数据字典、表关系的详细说明。 (4)用户界面设计:采用图形界面菜单驱动,界面要友好,操作要简单,C/S和B/S架 构自由选择。 (5)用户手册,描述软件系统所具有的功能及基本的使用方法使用户能了解该软件 的用途,并能确定在什么情况下、如何使用它。 四、文档格式 1、概述 包括项目背景、编写目的、软件定义、开发环境等内容。 2、需求分析 问题陈述、需完成的功能。 画出ER模型图 3、数据库逻辑设计 把ER模型图转换为关系表。 描述每一个基本表关系。要求所有关系达到BCNF范式。 定义视图、定义索引、主关键字、定义权限。 4、软件功能设计 画出软件功能图。 描述每一个功能所完成的任务情况。 5、界面设计 界面设计要合理。 6、结束语 写出完成本课程设计的心得,领会数据库理论与软件开发实践的关系。有哪些收获。软 件还需要哪些改进。 7、参考文献。 评分标准: 1. 优――完成上述题目的所有内容,并能适当扩展需求功能,功能完善,文档详细,数据库 设计合理,人机接口界面好。 2. 良――完成上述题目的大部分内容,功能完善,文档详细,数据库设计合较理,人机接口 界面较好。 3. 中――完成上述题目的大部分内容,功能基本完善,文档较详细,数据库设计基本合理, 有基本的人机接口界面。 4. 及格――基本完成上述内容,只有基本功能文档。 不及格――未按时完成上述内容,或者抄袭(雷同者全部为不及格)。 第1节 课程设计背景及意义 1.1课程设计背景 随着我国改革开放的不断深入、经济飞速的发展,企业要想生存发展,要想在激烈的市 场竞争中立于不败之地,没有现代化的管理是万万不行的。作为现代社会的一部分,超市 必须适应社会的发展,因此实现超市的信息化管理是很有必要的。 在传统的手工管理中,往往是用人工清点的方式来掌握超市中现有的商品,使用手工记账 的方式来掌握商品的进货和销售情况。这种方式在商品数量较少、商品库存变换少的情 况下,不失为一种较好的方法。但是,在目前的大中型超市中,往往需要处理的商品种类数 以千计,而且每天所发生的进货和销售情况纷繁复杂。如果要借助人工来实现这一系列数 据的记录和管理,工作量将非常巨大,而且容易出现错误,造成管理上的混乱,更何况还需 要对商品的数据进行统计和分析。随着科学技术的不断提高,计算机科学日渐成熟,其强 大的功能已被人们所认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作 为计算机应用的一部分,使用计算机对超市信息进行管理有着手工管理所无法比拟的优点 ,例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这 些优点能够极大地提高超市管理的效率,也能使超市步入科学化、正规化的管理。基于这 些问题,为了使超市管理工作规范化、系统化、程序化,避免超市管理的随意性,提高信息 处理的速度和准确性,能够及时、准确、有效地查询和修改商品情况,建立一个超市管理 系统是非常必要的。 1.2课程设计意义 超市管理系统用计算机管理超市库存进出管理
这个PDF文件是我花钱买来的,现在为了挣积分,拿出来与大家分享!! 本书深入浅出地介绍了目前世界上最受欢迎的数据库管理系统之一——SQL Server。全书共分三个部分:第一部分阐释了数据库的基本概念,讲解了数据库建模语言;第二部分展示了从概念建模到在SQL Server 2008上真正实现数据库的过程;第三部分深入探讨了SQL Server若干方面的技术细节,如数据保护、索引、并发访问等。通过将理论融入数据库实践,清晰地讲解了关系型数据库的设计原则,完整地展示了如何进行良好的关系型数据库设计,深入揭示了SQL Server 2008的技术细节。   本书浓缩了作者作为SQL Server数据库架构师多年来丰富的实践经验,适合各类数据库开发和管理人员学习参考 目录 第1章 数据库概念简介  1.1 数据库设计阶段   1.1.1 概念阶段   1.1.2 逻辑阶段   1.1.3 实现阶段   1.1.4 物理阶段  1.2 关系数据结构   1.2.1 数据库和模式   1.2.2 表、行和列   1.2.3 信息原则   1.2.4 域   1.2.5 元数据   1.2.6 键   1.2.7 未显式赋值的项(NULL)  1.3 实体之间的关系   1.3.1 二元关系   1.3.2 非二元关系  1.4 数据访问语言(SQL)  1.5 理解依赖性   1.5.1 函数依赖性   1.5.2 判定  1.6 总结 第2章 数据建模语言  2.1 数据建模介绍  2.2 实体  2.3 属性   2.3.1 主键   2.3.2 替代键   2.3.3 外键   2.3.4 域   2.3.5 命名  2.4 关系   2.4.1 识别性关系   2.4.2 非识别性关系   2.4.3 角色名字   2.4.4 关系基数   2.4.5 动词短语(关系名字)  2.5 描述信息  2.6 其他建模方法   2.6.1 信息工程   2.6.2 Chen ERD   2.6.3 Visio   2.6.4 Management Studio数据库关系图  2.7 最佳实践  2.8 总结 第3章 概念阶段数据建模  3.1 理解需求  3.2 文档化过程  3.3 需求收集   3.3.1 客户访谈   3.3.2 要回答的问题   3.3.3 现存的系统和原型   3.3.4 其他类型的文档  3.4 识别对象和过程   3.4.1 识别实体   3.4.2 实体间关系   3.4.3 识别属性和域  3.5 识别业务规则和业务过程   3.5.1 识别业务规则   3.5.2 识别基础业务过程  3.6 完成概念模型   3.6.1 识别明显的、额外的数据需求   3.6.2 和客户一起评审   3.6.3 重复以上步骤直到客户同意你的模型  3.7 最佳实践  3.8 总结 第4章 规范化过程  4.1 为什么要规范化   4.1.1 消灭重复数据   4.1.2 避免编写不必要的代码   4.1.3 给表瘦身   4.1.4 最大化聚集索引使用   4.1.5 降低每张表中索引的数量  4.2 规范化应该走多远  4.3 规范化过程  4.4 实体和属性的形式:第一范式   4.4.1 所有属性必须是原子的   4.4.2 实体的所有实例必须包含相同数量的值   4.4.3 实体中出现的所有实体类型都必须不同   4.4.4 第一范式所避免的不规则编程   4.4.5 当前设计不符合第一范式的线索  4.5 属性间的关系   4.5.1 第二范式   4.5.2 第三范式   4.5.3 Boyce-Codd范式  4.6 实体中的多值依赖   4.6.1 第四范式   4.6.2 第五范式  4.7 非规范化  4.8 最佳实践  4.9 总结  4.10 额外的例子  4.11 本书迄今为止所讲述的故事 第5章 实现基础的表结构  5.1 评审逻辑设计  5.2 变换设计   5.2.1 选择名字   5.2.2 处理子类型   5.2.3 决定树的实现方式   5.2.4 选择键的实现方式   5.2.5 决定域的实现方式   5.2.6 设置模式   5.2.7 评审“最终的”实现模型  5.3 实现设计   5.3.1 创建基本表结构   5.3.2 添加唯一性约束   5.3.3 构建默认约束   5.3.4 添加关系(外键)   5.3.5 处理排序规则和排序   5.3.6 计算列   5.3.7 实现用户定义的数据类型   5.3.8 文档化你的数据库   5.3.9 处理依赖信息  5.4 最佳实践  5.5 总结 第6章 保护数据的完整性  6.1 最佳实
### 回答1: u813.0数据库字典是指一个包含数据库中数据元素和表结构的详细说明的文档或工具。它可以包含关于每个表的列、数据类型、约束、索引和关联关系的信息。 数据库字典的主要用途是帮助开发人员和数据库管理员了解数据库结构和内容。它提供了一个方便的方式来查看表和列的定义,以及它们之间的关系。对于新项目的开发人员来说,数据库字典可以作为学习和了解数据库结构的参考工具。对于数据库管理员来说,它则可以作为管理和维护数据库的依据。 除了表和列的基本信息外,数据库字典还可以包含其他元数据,例如表和列的权限、定义的视图和存储过程的脚本等。这些信息对于数据库的安全管理和性能优化非常重要。 在使用数据库字典时,用户可以通过特定的查询和搜索功能来快速定位需要的信息。一些数据库管理系统还提供了可视化的界面,使用户可以直接在界面上浏览和编辑数据库字典。 总之,u813.0数据库字典是一个对数据库结构和内容进行详细描述的文档或工具,它能够帮助开发人员和数据库管理员更好地理解和管理数据库。 ### 回答2: U8数据库字典是一款专为U8数据库系统设计的辅助工具,用于帮助用户更好地管理和查询数据库中的数据字典信息。它能够提供数据库中各个表、字段的详细说明,以及它们之间的关系和依赖等重要信息。 U8数据库字典主要具有以下几个功能: 1. 数据表管理:通过U8数据库字典,用户可以查看和管理数据库中的各个数据表。它可以展示表的结构,包括表名、字段名、字段类型、字段长度等详细信息,方便用户快速了解数据库的结构。 2. 字段说明管理:U8数据库字典还提供字段说明管理功能,用户可以查看和编辑字段的相关说明,包括字段的含义、用途、取值范围等信息。这些说明对于不熟悉数据库的用户而言,可以帮助他们更好地理解表和字段的含义。 3. 关系和依赖管理:U8数据库字典可以展示数据表之间的关系和依赖。通过查看数据库字典,用户可以清晰地了解表与表之间的关联关系和依赖关系,从而更好地编写和优化数据库查询语句。 4. 数据字典导出和导入:U8数据库字典还支持数据字典的导出和导入功能,用户可以将数据库字典导出为Excel或文本格式,方便与其他用户或系统进行分享和使用。 总而言之,U8数据库字典是一款功能强大的辅助工具,可以帮助用户更好地管理和查询数据库中的数据字典信息,提高数据库的管理效率和数据查询的准确性。 ### 回答3: U813.0数据库字典是一种用于记录和描述数据库中各种元素和关系的工具。它提供了数据库中实体、属性、关系、以及它们之间的联系的详细信息。 数据库字典的主要作用是提供数据库的结构和内容的文档化描述,帮助开发人员和管理员了解数据库的组成和使用方法。它可以记录数据库中的表、字段、索引、触发器、存储过程等各个组件的定义用途数据库字典中常见的内容包括:表名、字段名、数据类型、长度、约束条件、描述、索引、默认值等。这些信息可以帮助开发人员正确操作数据库,保证数据的完整性和一致性。 通过使用数据库字典,开发人员可以更加方便地进行数据库设计和维护。他们可以通过查阅字典来了解数据库中的表和字段的定义,从而提高开发效率和准确性。此外,数据库字典还可以用于数据规范和维护,通过记录约束条件和数据格式,确保数据的正确性和质量。 数据库字典还可以用于数据库的文档化,为用户和管理员提供数据库的详细说明和使用指南。通过查阅字典,用户和管理员可以了解数据库的结构和内容,从而更好地理解和操作数据库。 总之,U813.0数据库字典是一种记录和描述数据库结构和内容的工具,其作用是提供数据库的详细说明和使用指南,帮助开发人员和管理员更好地设计、维护和使用数据库

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值