首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【SQL Server】创建索引

【SQL Server】创建索引

作者头像
MaybeHC
发布于 2024-04-23 11:03:05
发布于 2024-04-23 11:03:05
39600
代码可运行
举报
文章被收录于专栏:技术之路技术之路
运行总次数:0
代码可运行

索引类型

聚聚索引:表中各行的物理顺序与键值的逻辑(索引)顺序相同,每个表只能有一个

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

非聚集索引:非聚集索引指定表的逻辑顺序。

  • 数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。
  • 可以有多个,小于249个。
  • 唯一索引:唯一索引不允许两行具有相同的索引值。

如何创建索引

语法 CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED] INDEX index_name ON table_name [WITH FILLFACTOR=X]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[WITH FILLFACTOR=X] 填充因子:指定0-100之间的值,表示索引页填充的百分比

使用T-SQL语句删除索引 DROP INDEX table_name.index_name

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
表名和索引名称之间,用“.”分开

索引创建示例 在Students表的StudentName列创建非聚集索引

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
use StudentManager
go 
if exists(select name from sysindexes where name = 'IX_Student_StudentName')
drop index Students.IX_Student_StudentName
go
create nonclustered index IX_Student_StudentName
on Students(StudentName)
with fillfactor=30
go

索引的优缺点

优点

  • 加快访问速度
  • 加强行的唯一性

缺点

  • 带索引的表在数据库中需要更多的存储空间
  • 操纵数据的命令需要更长的处理时间,因为他们需要对索引进行更新。

创建索引的原则

按照下列标准选择建立索引的列 - 频繁搜索的列 - 经常作为查询选择的列 - 经常排序、分组的列

请不要使用下面的列创建索引 - 仅包含几个不同值得列 如男,女 - 表中仅包含几行

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
索引的初探(一)
以前听做DBA的朋友说索引能解决数据库百分之八十的问题,我也开始简单的写几篇关于索引的随笔,顺便来总结一下我理解的索引以及相关的知识,毕竟进步在于总结。 简介:      索引是数据库中一个排序的数据结构,以协助快速查询、更新数据库表中数据。我的理解就像是一本书,没有目录你也可以正常阅读,但是想要直接去读某个章节则需要全书寻找,太耽误时间了。所以索引就想目录一样帮助我们去直接定位文章的章节(数据的位置)。 索引结构:    在SQL Server中,索引(聚集索引)存储结构是一样的,都是B树。如图所示:
用户1217611
2018/01/30
5110
索引的初探(一)
SQL Server 重新组织生成索引
概述 无论何时对基础数据执行插入、更新或删除操作,SQL Server 数据库引擎都会自动维护索引。随着时间的推移,这些修改可能会导致索引中的信息分散在数据库中(含有碎片)。当索引包含的页中的逻辑排序(基于键值)与数据文件中的物理排序不匹配时,就存在碎片。碎片非常多的索引可能会降低查询性能,导致应用程序响应缓慢,所以在日常的维护工作当中就需要对索引进行检查对那些填充度很低碎片量大的索引进行重新生成或重新组织,但是在这个过程也需要注意一些小的细节,否则会产生错误。 正文 语法内容载自SQL Server联机
逸鹏
2018/04/11
3K0
SQL Server 重新组织生成索引
浅析一个sql server数据库事务死锁问题
一个学生管理系统,数据库是sql server,有一个Web API用于创建student。student对象的表结构如下:
Bruce Li
2020/02/20
1.3K0
MSSQL之八 实现视图与索引
l 视图可以使用户只关心他感兴趣的某些特定数据和他们所负责的特定任务,而那些不需要的或者无用的数据则不在视图中显示。
张哥编程
2024/12/13
2880
MSSQL之八 实现视图与索引
SQL基础(九)视图与索引实战演练
虽然索引很大程度上提高了查询速度,但同时也会降低更新表的速度,如:对表进行 insert、update 和 delete。这是因为更新表时,不仅要保存数据,还要保存一下索引文件
攻城狮杰森
2022/06/03
4680
SQL Server 索引和视图
索引(Index)是数据库中一种用于加速对表中数据的检索速度的数据结构。索引类似于书籍的目录,它提供了一种快速查找数据行的方法,避免了全表扫描的开销。通过使用索引,数据库系统可以直接定位到符合特定搜索条件的数据,而不必逐行遍历整个表。
神秘泣男子
2024/06/03
2900
SQL Server 索引和视图
聚集索引:SQL Server 进阶 Level 3
作者:David Durant,2013/01/25(首次发布于:2011/06/22) 关于系列 本文是属于Stairway系列:Stairway to SQL Server Indexes 索引是数据库设计的基础,并告诉开发人员使用数据库关于设计者的意图。不幸的是,当性能问题出现时,索引往往被添加为事后考虑。这里最后是一个简单的系列文章,应该使他们快速地使任何数据库专业人员“快速” 这个阶段的前面的层次提供了一般索引和非聚集索引的概述。它以下面关于SQL Server索引的关键概念结束。当请求到达您的数
Woodson
2018/07/19
1.3K0
MySQL 聚集与非聚集索引
在 InnoDB 中如果没有定义主键,会选择第一个非空唯一索引来代替。如果没有这样的索引,InnoDB 会自动生成一个不可见的列名为 ROW_ID,索引名为 GEN_CLUST_INDEX 的聚簇索引,该列是一个 6 字节的自增数值,随着插入而自增。
恋喵大鲤鱼
2024/01/28
2K0
MySQL 聚集与非聚集索引
MySQL 索引
它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
network_dream
2023/11/13
1840
MySql的索引学习和使用;(本人觉得足够详细)
索引:对数据库中一列或多列的值进行排序的一种结构 作用:使用索引可以快速访问数据库表中特定信息(加速检索表中的数据)
默 语
2024/11/20
2080
MySql的索引学习和使用;(本人觉得足够详细)
浅谈 SQL Server 查询优化与事务处理
之前我们简单了解了各种查询的用法,然而在实际开发中还会用到一些比较高级的数据处理和查询,包括索引、视图、存储过程和触发器。从而能够更好地实现对数据库的操作、诊断及优化。
小手冰凉
2019/09/10
2.2K0
浅谈 SQL Server 查询优化与事务处理
SQL Server的索引碎片
无论是什么关系型数据库,尤其在OLTP系统中,索引是提升数据访问速度的常用方式之一,但是不同类型的数据库,对索引碎片的处理可能会略有不同。
bisal
2021/09/06
1.7K0
SQL Server的索引碎片
深入解析MySQL索引:本质、分类、选择及使用原则
索引,作为数据库中的一种核心数据结构,其本质在于通过改变数据结构来加快查询效率。可以将索引理解为数据库中的一种“目录”或“路标”,它帮助数据库系统快速定位到需要查询的数据行,从而大大提高数据检索的速度。索引的本质就是一张特殊的表,前面是索引的关键字,后面是这个关键字存放的地址。当数据量庞大时,查找索引比查找全部内容要快得多,而且索引表数据量小,非常节省计算机资源。
小马哥学JAVA
2025/02/20
3610
SQL Server 性能优化之——T-SQL TVF和标量函数
上一篇介绍了关于“临时表、表变量和Union优化”这次转向关注定义函数——也就是表-值函数、标量函数。 UDF(用户定义函数,User defined Function)对于集中精力处理业务逻辑很方便,因为可以在UDF中指定一组业务逻辑,其中可以设计多个存储过程和一些特定的查询语句。但是,由于UDF对CPU的大量请求可能导致性能下降 1. TVF(表-值行数Table-Valued Functions) 一般情况,当使用TVF与一个对象内联接,如果该对象没有索引将会导致TVF像索引扫描或表扫描一样做扫描操作
数据分析
2018/03/01
1.7K0
聚集索引和非聚集索引(转)
索引是关系型数据库中给数据库表中一列或多列的值排序后的存储结构,SQL的主流索引结构有B+树以及Hash结构,聚集索引以及非聚集索引用的是B+树索引。
SuperHeroes
2019/03/12
1.1K0
SQL之视图与索引[通俗易懂]
##视图 人们在使用数据库时,并不是直接对数据源表进行操作,通常人们只关心源表的部分数据,因此为了使得用户在查询时方便,用不着在每次查询时都编写复杂的代码(比如连接等),可以事先将用户要使用的查询结果通过视图定义在数据库中,这样人们在进行查询时只需查看视图即可,简化了用户的操作,同时使得数据同源数据分离,提高了安全性。 1.视图的创建 语法: create view view_name as select_states [with check option] 视图创建注意事项: 1.视图的名称必须唯一,不能与表名重复 2.视图通常只能定义在当前数据库中,分区视图除外 3.可以在视图上定义视图 4.视图中的select定义部分不能包含order by,compute、compute by、default语句 5.不能创建临时视图,也不能创建临时表上的视图 6.当视图中的某一列是计算列等,或者有重名列,则视图必须为每个列名命一个唯一的名称 例子: 创建一个查询student表中人员所选课程成绩大于80分的视图 代码:
全栈程序员站长
2022/09/16
9140
SQL之视图与索引[通俗易懂]
SQL Server 深入解析索引存储(下)
概述 非聚集索引与聚集索引具有相同的 B 树结构,它们之间的显著差别在于以下两点: 基础表的数据行不按非聚集键的顺序排序和存储。 非聚集索引的叶层是由索引页而不是由数据页组成。 既可以使用聚集索引来为表或视图定义非聚集索引,也可以根据堆来定义非聚集索引。非聚集索引中的每个索引行都包含非聚集键值和行定位符。此定位符指向聚集索引或堆中包含该键值的数据行。 非聚集索引行中的行定位器或是指向行的指针,或是行的聚集索引键,如下所述: 如果表是堆(意味着该表没有聚集索引),则行定位器是指向行的指针。该指针由文件标
逸鹏
2018/04/11
9900
SQL Server 深入解析索引存储(下)
Windows server 2016——查询优化与事务处理
本系列文章将会讲解SQL server 中 查询优化与事务处理,了解使用索引工具,使用视图,存储过程,触发器等操作。
网络豆
2023/10/17
4540
Windows server 2016——查询优化与事务处理
sql server 聚集索引,非聚集索引,Identity ,gudi,主键的概念和比较
可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。
SpringSun
2022/05/26
1.2K0
sql server 聚集索引,非聚集索引,Identity ,gudi,主键的概念和比较
阅读查询计划:SQL Server 索引进阶 Level 9
David Durant,2011/10/05 关于系列 本文是属于Stairway系列:Stairway to SQL Server Indexes 索引是数据库设计的基础,并告诉开发人员使用数据库关于设计者的意图。不幸的是,当性能问题出现时,索引往往被添加为事后考虑。这里最后是一个简单的系列文章,应该使他们快速地使任何数据库专业人员“快速” 在整个阶段,我们经常说某个查询以某种方式执行,我们引用生成的查询计划来支持我们的陈述。 Management Studio显示的估计和实际查询计划可以帮助您确定索引
Woodson
2018/07/19
1.2K0
相关推荐
索引的初探(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档