SQL Server 索引

这篇具有很好参考价值的文章主要介绍了SQL Server 索引。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、索引的概念

  假设数据库中现在有2万条记录,现在要执行这样一个查询:SELECT * FROM table where num=10000。如果没有索引,必须遍历整个表,直到num等于10000的这一行被找到为止;如果在num列上创建索引,SQL Server不需要任何扫描,直接在索引里面找10000,就可以得知这一行的位置,所以索引的建立可以加快数据库的查询速度。

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

2、索引的优缺点

1)索引的优点:

  创建惟一性索引,保证数据库表中每一行数据的惟一性。

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

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

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

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

2)索引的缺点:

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

  索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚集索引,那么需要的空间就会更大。

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

3、索引的分类

  在SQL Server 中提供的索引类型主要有以下几类:聚集索引、非聚集索引、唯一索引、包含性列索引、索引视图、全文索引、空间索引、筛选索引、和XML索引。

  按照存储结构的不同,可以将索引分为两类:聚集索引和非聚集索引,聚集索引和非聚集索引的区别是在物理数据的存储方式上。

1.聚集索引: 聚集索引根据数据行的键值在表或视图中排序和存储这些数据行。索引定义中包含聚集索引列。每个表只能有一个聚集索引,因为数据行本身只能按一个顺序排序。

  聚集索引就相当于使用字典的拼音查找,因为聚集索引存储记录是物理上连续存在的,即拼音 a 过了后面肯定是 b 一样。

2.非聚集索引: 具有独立于数据行的结构。非聚集索引包含非聚集索引键值,并且每个键值项都有指向包含该键值的数据行的指针。

  非聚集索引就相当于使用字典的部首查找,非聚集索引是逻辑上的连续,物理存储并不连续。

4、索引的操作

  1.索引的创建

  2.查看索引信息

   3.索引的修改

  4.索引的删除

  5.设置索引的选项

5、索引的设计原则

  (1)索引并非越多越好,一个表中如果有大量的索引,不仅占用大量的磁盘空间,而且会影响INSERT、DELETE、UPDATE等语句的性能。因为当表中数据更改的同时,索引也会进行调整和更新。

  (2)避免对经常更新的表进行过多的索引,并且索引中的列尽可能少。而对经常用于查询的字段应该创建索引,但要避免添加不必要的字段。

  (3)数据量小的表最好不要使用索引,由于数据较少,查询花费的时间可能比遍历索引的时间还要短,索引可能不会产生优化效果。

  (4)在条件表达式中经常用到的、不同值较多的列上建立索引,在不同值少的列上不要建立索引。比如在学生表的“性别”字段上只有“男”与“女”两个不同值,因此就无须建立索引。如果建立索引,不但不会提高查询效率,反而会严重降低更新速度。

  (5)当唯一性是某种数据本身的特征时,指定唯一索引。使用唯一索引能够确保定义的列的数据完整性,提高查询速度。

  (6)在频繁进行排序或分组(即进行GROUP BY或ORDER BY操作)的列上建立索引,如果待排序的列有多个,可以在这些列上建立组合索引。

6、索引的分析与维护

6.1 索引的分析

1.使用SHOWPLAN语句

  显示查询语句的执行信息,包含查询过程中连接表时所采取的每个步骤以及选择哪个索引。语句如下:

SET SHOWPLAN_ALL { ON | OFF }
SET SHOWPLAN_TEXT { ON | OFF }

复制

2.使用STATISTICS IO语句

  STATISTICS IO语句表示使 SQL Server 显示有关由 Transact-SQL 语句生成的磁盘活动量的信息。语法如下:

SET STATISTICS IO { ON | OFF }

复制

6.2 索引的维护

  1.使用DBCC SHOWCONTIG语句,显示指定表的数据和索引的碎片信息。当对表进行大量的修改或添加数据后,应该执行此语句来查看有无碎片。

  2.使用DBCC DBREINDEX语句对指定数据库中的表重新生成一个或多个索引。

  3.使用DBCC INDEXDEFRAG语句,指定表或视图的索引碎片整理。

7、全文索引

  全文索引是一种特殊类型的基于标记的功能性索引,它是由 Microsoft SQL Server 全文引擎生成和维护的。生成全文索引的过程不同于生成其他类型的索引。全文引擎并非基于特定行中存储的值来构造 B 树结构,而是基于要编制索引的文本中的各个标记来生成倒排、堆积且压缩的索引结构。

8、数据完整性

  数据完整性是SQL Server用于保证数据库中数据一致性的一种机制,防止非法数据存入数据库。具体地数据完整性主要体现在以下几点。

  (1)数据类型准确无误。

  (2)数据取值符合规定的范围。

  (3)多个数据表之间的数据不存在冲突。

下面介绍SQL Server提供的4种数据完整性机制:

  1.域完整性:域是指数据表中的列(字段),域完整性就是指列的完整性。它要求数据表中指定列的数据具有正确的数据类型、格式和有效的数据范围。

  2.实体完整性:是指所有的记录都应该有一个惟一的标识,以确保数据表中数据的惟一性。

  3.引用完整性:引用完整性又称参照完整性,是用来维护相关数据表中数据一致的手段。

  4.用户定义完整性:用户定义完整性使您可以定义不属于其他任何完整性类别的特定业务规则。文章来源地址https://www.toymoban.com/news/detail-537765.html

到了这里,关于SQL Server 索引的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQL Server数据库——创建数据库

    目录 一、界面方式创建数据库 1.1创建数据库xscj,数据文件和日志文件的属性按默认值设置  1.2在xscj数据库中增加文件xcsj1,其属性均取系统默认值  1.3在数据库xscj中增加一个名为myGroup的文件组。 1.4数据库的重命名  1.5数据库的删除  二、命令方式创建数据库 以创建学生管

    2024年02月01日
    浏览(67)
  • 【数据库概论】第三章 SQL简述、数据定义和索引

    最早在IBM的关系数据库管理系统原型SystemR上实现,后来美国国家标准局(ANSI)批准SQL作为关系数据库语言的美国标准,同年公布了SQL标准文本。近些年来SQL标准的内容越来越丰富和复杂。目前没有任何一个数据库系统能够支持SQL标准的所有概念和特性,同时不少软件厂商对

    2024年02月05日
    浏览(68)
  • SQL Server 数据库安装教程SQL Server 2017

    官网: SQL Server 下载 | Microsoft  软件版本看你自己需求啦,反正我是下了SQL Server 2017 评估版(试用180天,秘钥自己百度)  下载后,软件有点小,不是实际的安装包,只是安装导向包,在安装过程才下载实际的安装包:      要保持有网络,直接双击安装,选基本即可:  选好

    2024年02月05日
    浏览(93)
  • GaussDB云数据库SQL应用系列—索引管理

    目录 一、前言 二、注意事项 三、索引创建 1、创建普通索引 2、创建唯一索引 3、创建多字段索引 4、创建部分索引 5、创建表达式索引 四、索引管理 1、查看索引信息 2、删除索引 总结 随着互联网的快速发展,数据量呈现爆炸式增长。如何高效地管理和查询这些数据成为了

    2024年02月09日
    浏览(64)
  • sql server数据库跟踪——SQL Server Profiler解析

    工具 : SQL Server Profiler这个工具是SQL Server数据库自带的语句执行跟踪工具,常使用于分析软件修改数据库时所执行的语句,适合用来研究软件运行数据库的原理。 打开方式: 本机安装了SQL server的话,都是自带的。直接去直接在【开始】-【程序】-搜索Profiler可找到【SQL Ser

    2024年04月16日
    浏览(140)
  • SQL Server2008数据库升级至SQL Server2012

    今天接到了一个需求,服务器上的数据库需要从SQL Server2008升级到2012。根据之前的经验,感觉是一个非常有意思的过程(事实上也是。这个过程也给了我一些触动与启发,因此,便记录了自己的踩坑过程以及解决方案,还有安装过程的体会。 启动SQL Server2012的安装引导程序,

    2024年02月05日
    浏览(89)
  • MySQL数据库中的索引(含SQL语句)

    假设有一张表,表中有100万条数据,这100万条数据在硬盘上是存储在数据页上的,一页数据大小为16k。存储100万条数据那么就需要数据页,假设其中有一条数据是“id为7900”的,那么如果要查询这条数据,其中SQL是SELECT * FROM 表名 WHERE id = 7900。在执行这条SQL语句的时候,MyS

    2024年02月02日
    浏览(80)
  • SQL Server数据库使用

    SQL Server 2008 R2的安装和使用 安装前的准备 安装过程 1)安装所选功能 2)安装的类型:默认或命名实例 3)服务账户 4)身份验证模式 5)排序规则设置 6)开始安装 7)完成安装 验证数据库安装成功 【开始】|【程序】中可以看到Microsoft SQL Server 2008的程序组 启动和停止数据库

    2024年02月11日
    浏览(77)
  • SQL Server数据库管理

    数据库登录——使用两种方式均可登录数据库:windows和sqlserver身份验证方式两种。  数据库的使用和管理 步骤一:创建数据库 1)新建数据库,数据库名为book,初始大小都配置为3,自动增长与路径都为默认,点击确定   步骤二:查看主数据与日志文件(查看C:Program Files

    2024年02月13日
    浏览(70)
  • Sql server数据库安装

    以sql server2014数据库为例 sql server数据库安装需要注意两点: 1.不使用从镜像中拷贝出的压缩包安装会报错,提示缺少trin_aide.cab和vs_shell.cab文件 2.sql server2014数据库安装前需要安装.net Framework 3.5 各个版本sql server数据库情况: 1.sql server2008 R2数据库提示需要.net Framework 3.5。但不

    2024年02月09日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包