广告
返回顶部
首页 > 资讯 > 精选 >SQL Server中的索引怎么使用
  • 140
分享到

SQL Server中的索引怎么使用

2023-06-30 14:06:00 140人浏览 八月长安
摘要

本篇内容主要讲解“sql Server中的索引怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL Server中的索引怎么使用”吧!一、索引的介绍什么是索引?索引是

本篇内容主要讲解“sql Server中的索引怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL Server中的索引怎么使用”吧!

    一、索引的介绍

    什么是索引?

    索引是一种磁盘上的数据结构,建立在表或视图的基础上。使用索引可以使数据的获取更快更高校,也会影响其他的一些性能,如插入或更新等。

    索引主要分为两种类型:

    1、聚集索引和非聚集索引

    字典的目录就是一个索引,按照拼音查询想要的字就是聚集索引(物理连续,页码与目录一一对应),偏旁部首就是一个非聚集索引(逻辑连续,页码与目录不连续)。

    聚集索引存储记录是物理上连续存在的,而非聚集索引是逻辑上的连续,物理存储并不连续。

    聚集索引一个表中只能有一个,而非聚集索引一个表中可以有多个。

    2、索引的利弊

    使用索引是为了避免全表扫描,因为全表扫描是从磁盘上读取表的每一个数据页,如果有索引指向数据值,则只需要读少次数的磁盘就可以。

    带索引的表在数据库中占用更多的空间,同样增、删、改数据的命令所需时间会更长。

    3、索引的存储机制

    书中的目录是一个字词以及所在的页码列表,数据库中的索引是表中的值以及各值存储位置的列表。

    聚集索引是在数据库中新开辟一个物理空间,用来存放他排列的值,当有新数据插入时,他会重新排列整个物理存储空间。

    非聚集索引只包含原表中的非聚集索引的列和指向实际物理表的一个指针。

    数据表的基本结构

    当一个新的数据表创建时,系统将在磁盘中分配一段以8k为单位的连续空间。当一个8k用完的时候,数据库指针会自动分配一个8k的空间,每个8k的空间称为一个数据页,并分配从0-7的页号,每个文件的第0页记录引导信息叫页头,每8个数据页由64k组成形成扩展区。全部数据页的组合形成堆。

    SQL Server规定行不能跨越数据页,所以每行记录的最大数量只能是8k,这就是为什么char和varchar这两种字符类型容量要限制在8k以内的原因,存储超过8k的数据应使用text类型,其实text类型的字段值不能直接录入和保存,它是存储一个指针,指向由若干个8k的数据页所组成的扩展区,真正的数据其实放在这些数据页中。

    二、设置索引的权衡

    1、什么情况下设置索引

    • 定义主键的数据列(sql server默认会给主键一个聚集索引)。

    • 定义有外键的数据列

    • 对于经常查询的数据列

    • 对于需要在指定范围内频繁查询的数据列

    • 经常在where子句中出现的数据列

    • 经常出现在关键字 order by、group by、distinct后面的字段。

    2、什么情况下不要设置索引

    • 查询中很少涉及的列,重复值比较多的列。

    • text、image、bit数据类型的列

    • 经常存取的列

    • 经常更新操作的表,索引一般不要超过3个、最多不要5个。虽说提高了访问速度,但会影响更新操作。

    三、聚集索引

    1、使用SSMS创建聚集索引

    展开要创建索引的表->右击索引->选择新建索引->聚集索引->新建索引点添加->选择列->选择升序或降序->输入名字->确定。

    默认情况下,生成主键的同时将自动创建一个聚集索引。

    2、使用T-SQL创建聚集索引

    create clustered index index_name on table_name(    id desc)with(drop_existing=on); 

    每张表或者视图只能包含一个聚集索引,因为聚集索引改变了数据存储与排列方式。

    无论是聚集还是非聚集索引,都将信息存储在平衡树或B-树中,B-树识别类似数据并将他们组合在一起,正是由于B-树中的检索基于键值,因此索引可以提升数据访问的速度。B-树将具有类似键的组合起来,所以数据库引擎只需搜索少量页面即可找到目标记录。

    四、非聚集索引

    每张表上可以有多个非聚集索引,可以在某个列上创建一个索引,也可以在已经是现有索引组成部分的多列上创建索引。

    1、SSMS创建方法同上,T-SQL创建方法如下:

    create nonclustered index fei on defualt(    hits desc)

    2、添加索引选项

    fillfactor:用于在创建索引时,每个索引页的数据占索引大小的百分比,默认100.当需要频繁修改表时,建议设置为70-80,不经常更新时建议90。

    五、示例

    create table ceshi --新建表(    id int identity(1,1) primary key,    name varchar(20),    code varchar(20),    [date] datetime)--插入10w条测试数据declare @n intset @n = 1while @n <100000 begin   insert into ceshi (name,code,[date]) values ('name'+cast(@n as varchar(20)),'code'+cast(@n as varchar(20)),getutcdate())  set @n=@n+1end--查看数据set statistics io on --查看磁盘iOSet statistics time on --查看sql语句分析编译和执行时间select * from ceshi--查看索引情况exec sp_helpindex ceshiselect * from ceshi where name = 'name1'

    ctrl+l 查看执行计划 聚集索引扫描开销100%,考虑优化为索引查找,在name上建立非聚集索引。

    --建立非聚集索引create index name_index on ceshi(    name)--再次查看索引情况 多出来新建的非聚集索引exec sp_helpindex ceshi--在运行上面的语句select * from ceshi where name = 'name1'--明显发现速度变快了 , ctrl+l 发现聚集索引和非聚集索引各占50%

    六、管理索引

    --查看该表中的索引exec sp_helpindex ceshi --改名exec sp_rename 'ceshi.name_index','new_name' --删除索引drop index ceshi.new_name--检查碎片dbcc showcontig(ceshi,new_name)--整理碎片dbcc indexdefrag(WEBDB,ceshi,new_name) --更新表中所有索引的统计update statistics ceshi

    到此,相信大家对“SQL Server中的索引怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    --结束END--

    本文标题: SQL Server中的索引怎么使用

    本文链接: https://www.lsjlt.com/news/329746.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • SQL Server中的索引怎么使用
      本篇内容主要讲解“SQL Server中的索引怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL Server中的索引怎么使用”吧!一、索引的介绍什么是索引?索引是...
      99+
      2023-06-30
    • SQL Server中的索引怎么使用
      在SQL Server中,索引可以提高查询性能,加快数据的检索速度。下面是一些使用索引的常见方法:1. 创建索引:在需要加速查询的列...
      99+
      2023-08-18
      SQL Server
    • Sql Server 中怎么优化索引
      Sql Server 中怎么优化索引,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。代码如下: --Begin Index(索引) 分析优...
      99+
      2022-10-18
    • SQL Server索引有什么用
      这篇文章给大家分享的是有关SQL Server索引有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。索引的概念索引的用途:我们对数据查询及处理速度已成为衡量应用系统成败的标准...
      99+
      2022-10-18
    • SQL Server中索引的用法详解
      索引是一种数据结构,用于提高数据库中数据的查询效率。SQL Server中的索引可以分为聚集索引和非聚集索引两种类型。聚集索引决定了...
      99+
      2023-08-17
      SQL Server
    • SQL Server索引结构的具体使用
      目录名词介绍索引表数据页索引是数据库的基础,只有先搞明白索引的结构,才能搞明白索引运行的逻辑 本文通过 索引表、数据页、执行计划、IO统计、B+Tree 来尽可能的介绍 SQL 语句...
      99+
      2022-11-13
    • Sql Server中聚集索引的作用是什么
      这篇文章将为大家详细讲解有关Sql Server中聚集索引的作用是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一:现象1:无索引的情况  还是老规矩,...
      99+
      2022-10-18
    • SQL Server中怎么实现全文索引服务
      SQL Server中怎么实现全文索引服务,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。SQL7的全文检索和IndexServer的检索方式非...
      99+
      2022-10-18
    • SQL中索引怎么用
      小编给大家分享一下SQL中索引怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 1、概念&nb...
      99+
      2022-10-19
    • Sql Server中非聚集索引的作用是什么
      这篇文章将为大家详细讲解有关Sql Server中非聚集索引的作用是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一:现象先让我们一睹非聚集索引的真容,...
      99+
      2022-10-18
    • SQL Server中怎么为索引添加注释信息
      SQL Server中怎么为索引添加注释信息,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。  如何通过扩展属性为SQLServer的索引添...
      99+
      2022-10-18
    • SQL Server中哈希索引的原理是什么
      这篇文章将为大家详细讲解有关SQL Server中哈希索引的原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。当一个key-value键值对传递给一个...
      99+
      2022-10-18
    • SQL Server怎么找出数据库中没有索引的表
      这篇文章主要讲解了“SQL Server怎么找出数据库中没有索引的表”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL Server怎么找出数据库中没有索...
      99+
      2022-10-18
    • MySQL中怎么使用索引的SQL类型
      本篇文章给大家分享的是有关MySQL中怎么使用索引的SQL类型,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1. 为什么使用索引在无索引的情况...
      99+
      2022-10-18
    • SQL Server索引优化的方法是什么
      这篇“SQL Server索引优化的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SQL Server索引优化的方...
      99+
      2023-06-27
    • SQL索引怎么创建使用
      这篇文章主要讲解了“SQL索引怎么创建使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL索引怎么创建使用”吧!索引的作用索引的作用就是加快查询速度,如果把使用了索引的查询看做是法拉利跑...
      99+
      2023-06-02
    • SQL Server索引设计基础知识详解使用
      目录一、前言二、索引设计背景知识2.1、索引设计策略包括的任务三、常规索引设计3.1、数据库注意事项3.2、查询注意事项3.3、列注意事项3.4、索引的特征3.5、索引排序顺序设计指南总结一、前言 索引设计不佳和缺少索引...
      99+
      2023-04-03
      SQL Server索引设计 SQL索引设计
    • SQL Server中表和索引存储结构的作用是什么
      这篇文章给大家介绍SQL Server中表和索引存储结构的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1. 堆所谓堆(heap),就是不含聚集索引的表。堆的 sys.par...
      99+
      2022-10-18
    • sql索引怎么建立与使用
      SQL索引可以通过CREATE INDEX语句来建立,语法如下:```CREATE INDEX index_nameON table...
      99+
      2023-08-18
      sql
    • 优化SQL Server索引的技巧是什么样的
      本篇文章给大家分享的是有关优化SQL Server索引的技巧是什么样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。影响到数据库性能的最大因素就是索引。由于该问题的复杂性,我只...
      99+
      2023-06-05
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作