SQLServer创建索引的5种方法

SQLServer 创建全文索引(两种方法) 1 全文索引向导添加 (1)选择表格右击-->全文索引-->定义全文索引 (2)选择索引 (3)选择索引列 (4)选择跟踪(自动) (5)选择目录、索引文件组合非索引字表 (6)定义填充计划(可选) (7)全文索引向导说明 (8)创建全文索引成功 2 SQL语句添加 --打开索引支持 execute SP_FULLTEXT_DATABASE 'Enable'; --建立全文目录 execute sp_fulltext_catalog... 阅读详情
AI摘要

本文详细介绍了在SQL Server中创建不同类型的索引(包括聚集索引、非聚集索引、覆盖索引、唯一索引和筛选索引等)的方法,并探讨了各种索引的特点与应用场景。

前期准备:

create table Employee (
            ID int not null primary key,
            Name nvarchar(4),
            Credit_Card_ID varbinary(max)); --- 小心这种数据类型。
go

说明:本表上的索引,都会在创建下一个索引前删除。


创建聚集索引

方法 1、

ALTER TABLE table_name ADD CONSTRAINT cons_name priamry KEY(columnname ASC|DESC,[.....]) WITH (drop_existing = ON);
ALTER TABLE employee ADD CONSTRAINT pk_for_employee PRIMARY KEY CLUSTERED (id);
go 

这个是一种特别的方法,因为在定义主键的时候,会自动添加索引,好在加的是聚集索引还是非聚集索引是我们人为可以控制的。

通过sp_helpindex 可以查看表中的索引

execute sp_helpindex @objname = 'Employee';
go

这里写图片描述

注意:这个索引是无法删除的,不信! 你去删一下

drop index Employee.PK__Employee__3214EC277D95E615;
go

这里写图片描述

方法 2、

create clustered index ix_name on table_name(columnName ASC|DESC[,......]) with (drop_existing = on);

create clustered index ix_clu_for_employee_ID on Employee(ID);

go

查看创建的索引
这里写图片描述

创建复合索引

create index ix_com_Employee_IDName on Employee (ID,Name)with (drop_existing = on);

这里写图片描述
这样就算是创建一个复合索引了,不过脚下的路很长,我们看下一个复合索引的例句:

create index ix_com_Employee_IDCreditCardID on Employee(ID,Credit_Card_ID);

看到这句话,你先问一下自己它有没有错!
这里写图片描述
可以发现它错了,varbinary是不可以建索引的。

创建覆盖索引

create index index_name on table_Name (columnName ASC|DESC[,......]) include(column_Name_List)with (drop_existing = on);

create index ix_cov_Employee_ID_Name on Employee (ID) include(Name);

go

首先,覆盖索引它只是非聚集索引的一种特别形式,下文说的非聚集索引不包涵覆盖索引,当然这个约定只适用于这一段话,这样做的目的是为了说明各中的区别。

首先:

  1. 非聚集索引不包涵数据,通过它找到的只是文件中数据行的引用(表是堆的情况下)或是聚集索引的引用,SQL Server要通这个引用去找到相应的数据行。

  2. 正因为非聚集索引它没有数据,才引发第二次查找。

  3. 覆盖索引就是把数据加到非聚集索引上,这样就不需要第二次查找了。这是一种以空间换性能的方法。非聚集索引也是。只是做的没有它这么出格。

创建唯一索引

create unique index index_name on table_name (column ASC|DESC[,.....])with (drop_existing = on);

正如我前面所说,在创建表上的索引前,我会删除表上的所有索引,这里为什么我要再说一下呢!因为我怕你忘了。二来这个例子用的到它。
目前表是一个空表,我给它加两行数据。

insert into Employee(ID,Name) values(1,'AAA'),(1,'BBB');

这里写图片描述
这下我们为表加唯一索引,它定义在ID这个列上

create unique index ix_uni_Employee_ID on Employee(ID);
go -- 可以想到因为ID有重复,所以它创建不了。

这里写图片描述
结论 1、 如果在列上有重复值,就不可以在这个列上定义,唯一索引。
下面我们把表清空: truncate table Employee;
这里写图片描述

接下来要做的就是先,创建唯一索引,再插入重复值。

create unique index ix_uni_Employee_ID on Employee(ID);
go

这里写图片描述

insert into Employee(ID,Name) values(1,'AAA'),(1,'BBB');
go

这里写图片描述
结论 2、
定义唯一索引后相应的列上不可以插入重复值。

筛选索引

create index index_name on table_name(columName) where boolExpression;

create index ix_Employee_ID on Employee(ID) where ID>100 and ID< 200;

go

只对热点数据加索引,如果大量的查询只对ID 由 100 ~ 200 的数据感兴趣,就可以这样做。

  1. 可以减小索引的大小
  2. 为据点数据提高查询的性能。

总结:

BTree 索引有聚集与非聚集之分。
就查看上到聚集索引性能比非聚集索引性能要好。

非聚集索引分
覆盖索引,唯一索引,复合索引(当然聚集索引也有复合的,复合二字,只是说明索引,引用了多列),一般非聚集索引就查看上到非聚集索引中覆盖索引的性能比别的非聚集索引性能要好,它的性能和聚集索引差不多,可是它也不是’银弹‘ 它会用更多的磁盘空间。

最后说一下这个

with (drop_existing = on|off),加上这个的意思是如果这个索引还在表上就drop 掉然后在create 一个新的。特别是在聚集索引上使用这个就可以不会引起非聚集索引的重建。

with (online = on|off) 创建索引时用户也可以访问表中的数据,

with(pad_index = on|off fillfactor = 80); fillfactor 用来设置填充百分比,pad_index 只是用来连接fillfactor 但是它又不能少,这点无语了。

with(allow_row_locks = on|off | allow_page_locks = on |off); 是否允许页锁 or 行锁

with (data_compression = row | page ); 这样可以压缩索引大小

使用SQL Server中的CREATE INDEX语句 通过创建适当的索引,可以显著提高数据库查询的性能。索引可以减少查询的执行时间,并且可以降低数据库服务器的负载。然而,需要注意的是,创建过多的索引可能会导致维护成本的增加,并可能对数据插入、更新和删除操作的性能产生一定的影响。CLUSTERED索引确定了表中数据的物理顺序,而NONCLUSTERED索引则不会对表中数据的物理顺序产生影响。通过创建索引,可以加快查询的速度,并且可以减少数据库服务器的负载。如果指定了UNIQUE关键字,则索引中的所有值必须是唯一的。index_name:这是要创建的索引的名称。 阅读详情

相关推荐

SQLserver索引创建语句.txt

SQLserver索引创建语句

SqlServer索引

一、创建索引: 语法: CREATE [索引类型] INDEX 索引名称 ON 表名(列名) 1.聚集索引 create clustered index index_name on table_name (cloumn_name); 2.非聚集索引 create nonclustered index index_name on table_name (cloumn_name); 3.唯一索引 create unique index index_name on table_name(cloumn_name)

黄瓜炒鸡蛋的博客 4490

从农田到城市:如何利用NDVI和缨帽变换提升遥感图像分类精度?

本文深入探讨了如何利用NDVI(归一化差值植被指数)和缨帽变换(Tasseled Cap Transformation)两大关键技术,有效提升从农田到城市等复杂场景的遥感图像分类精度。文章通过剖析地物光谱特征,对比了原始波段与衍生特征的优劣,并提供了在ENVI、ArcGIS及Python环境中的具体操作指南与实战策略,旨在帮助从业者构建更鲁棒的特征工程流程,从而解决地物混淆、边界模糊等常见分类难题。

redis7keeper的博客 865

Sql Server索引的创建及优化

SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间。聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。

a876106354的博客 4748

我想自己组装一台服务器,微调大模型通义千问2.5 Omni 72B,但是我是个人购买,资金非常有限,最省的方案

阶段动作✅ 推理用 GGUF + llama.cpp + 4090 加载 14B INT4✅ 微调训练 Qwen2.5-7B-Chat,使用 LoRA / QLoRA❌ 放弃Qwen2.5-Omni-72B 全量微调(显存需求 >160G,不现实)

AngelCryToo的专栏 2821

农业AI避坑指南:用YOLO11做叶片病害检测时遇到的5个典型问题

本文分享了使用YOLO11模型进行农业叶片病害检测时常见的五个典型问题及解决方案。针对田间多变光照、病害样本不均衡、标注歧义、背景干扰和边缘部署等挑战,提供了包括场景自适应数据增强、解耦训练、软标签与鲁棒损失函数、困难负样本构建以及模型轻量化部署在内的实战经验,旨在帮助开发者提升农业AI项目的落地效果。

ujm56789012的博客 205

聚集索引和非聚集索引的区别

原文地址:http://www.cnblogs.com/flashicp/archive/2007/05/08/739245.html 1.聚集索引:         汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。如果您翻完

wusuopuBUPT的专栏 1319

(实战)[re:Invent 2018]-001:赛道分析-(致敬1024)

打印log

Rainbow 2778

SQLServer索引

SQLServer索引,SQlServer执行计划

weixin_43159131的博客 4098

在claude code desktop中安装pdf处理skill的实战教程

本文介绍了在Claude Code Desktop中安装PDF处理Skill的详细教程。针对国内用户使用第三方API时无法直接调用官方插件的问题,提供了完整的解决方案。教程从下载Anthropic官方Skills源码开始,逐步演示了如何将PDF处理模块打包、上传至Claude Code Desktop,并最终成功加载使用。整个过程采用全流程拆解方式,确保新手也能快速上手。通过本文,读者可以掌握在非官方环境下扩展Claude Code功能的方法,从而提升工作效率

weixin_43178406的博客 9万+

Gbase 8a GDCA考试真题100%

本文整理一些Gbase 8a中非常易错得考试真题及答案,而且都是不好搜的。加粗的是正确答案。

打工之路,一路生花 4299

SQLServer索引全解

索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间

weixin_43295327的博客 3730

CDD数据库文件制作(二)——DTC配置

1.DTC库 2.新建DTC DTC相关介绍:https://blog.youkuaiyun.com/LOVE135149/article/details/122565443 ① 选择DTC数据库 ② 点击新建DTC ③ DTC参数编辑 3.将DTC库中的DTC加载到Variant中 找到Fault Memory的DTC Table,鼠标放在DTC Table区域,右键点击选择Copy … Reference from Available DTCs…,即可将DTC库中的故障码加载至Variant中。 虽然选择Co

LOVE135149的博客 1万+

SQLSERVER 创建索引 修改索引 删除索引

因为要准备面试了,所以准备了一下,发现有些不熟练了,而且一些操作都需要上网进行 百度 下面是总结 检查表的索引信息 EXEC Sp_helpindex jerry_boys 创建索引 create unique/CLUSTERED/nonCLUSTERED index pkindex on jerry_boys(name) 删除 索引 drop index pkindex ...

zq爱生活爱代码的博客 5312

Scratch全攻略:从入门到实践的编程之旅

Scratch 是一款由麻省理工学院(MIT)开发的图形化编程工具 ,它诞生的初衷是为了让编程教育更加普及,尤其是让孩子们能够轻松接触和学习编程。与传统的基于文本代码的编程方式不同,Scratch 通过将编程指令以图形化的积木形式呈现,极大地降低了编程的门槛,让编程变得如同搭积木一样简单有趣。

邓邓子的博客 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SQLServer之创建全文索引

SQLServer之创建全文索引 创建全文索引的必须条件 必须具有全文目录,然后才能创建全文索引。目录是包含一个或多个全文索引的虚拟容器。 使用SSMS数据库管理工具创建全文索引 1、连接数据库,选择数据库,选择数据表-》右键数据表-》选择全文索引-》选择定义全文索引。 2、在全文索引向导点击下一步。 3、在全文索引向导弹出框-》选择一个最小唯一索引-》点击下一步。 ...

cxu123321的博客 1097

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SQLServer索引创建数量决策指南

场景建议索引数量理由高并发OLTP(写密集型)少(如 2-5个)最小化写操作期间的索引维护开销。OLTP(读多写少)中等(如 5-10个)在查询性能和写开销之间取得平衡。OLAP/数据仓库多(10个以上)查询性能是首要任务,写操作不频繁。最终答案:不要追求一个固定的数字。正确的做法是:从核心查询开始,为它们创建最必要的索引(通常是主键和频繁查询的外键)。持续监控系统性能和索引使用情况。迭代优化,根据实际的INSERTUPDATEDELETESELECT性能和数据变化,逐步添加或删除索引。

BillKu的博客 928

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

SQLServer之创建唯一聚集索引

创建唯一聚集索引典型实现 唯一索引可通过以下方式实现: PRIMARY KEY 或 UNIQUE 约束 在创建 PRIMARY KEY 约束时,如果不存在该表的聚集索引且未指定唯一非聚集索引,则将自动对一列或多列创建唯一聚集索引。 主键列不允许空值。 在创建 UNIQUE 约束时,默认情况下将创建唯一非聚集索引,以便强制 UNIQUE 约...

weixin_34250434的博客 3630

Sqlserver 自动创建索引

PRINT '失败语句: ' + ERROR_PROCEDURE() + ' (行号:' + CAST(ERROR_LINE() AS VARCHAR) + ')';PRINT '-- 执行模式: ' + CASE @DebugMode WHEN 1 THEN '调试模式 (仅显示SQL)' ELSE '执行模式 (实际创建索引)' END;PRINT '-- 检测到高价值缺失索引: ' + CAST(@IndexCount AS VARCHAR) + ' 个';PRINT '-- 开始创建索引...';

LL548542的博客 588

SqlServer 创建全文索引

笔者注:全文索引对文章系统中,正文关键词检索作用非常之大,我使用的是sql server2005,文章表的正文字段是varchar(max)类型。进行全文索引优化之后,速度提高75%左右。一下是创建的方法。 引言 微软的SQL Server数据库是一个在中低端企业应用中占有广泛市场的关系型数据库系统,它以简单、方便、易用等特性深得众多软件开发人员和数据库管理人员的钟爱。但SQL Server...

weixin_34247299的博客 780

sqlserver索引

文章目录前言一、索引的优点与缺点优点缺点二、聚集索引和非聚集索引聚集索引举个栗子非聚集索引举个栗子三、两种索引如何选择sqlserver如何创建两种索引 前言 一、索引的优点与缺点 优点 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。 第五,通过使用索引,可以

技术分享博客 6520

【SqlServer】SqlServer索引的创建、查看、删除

索引加快检索表中数据的方法,它对数据表中一个或者多个列的值进行结构排序,是数据库中一个非常有用的对象。 索引的创建 #1使用企业管理器创建 启动企业管理器--选择数据库------选在要创建索引的表------在表的下拉菜单中选择索引---在快捷菜单中选择新建索引-- 在新建索引对话框中单击“添加”按钮,弹出“从列表中选择列”,在该对话框中选择要添加到索引键的表列 单击确定返回新建索...

weixin_34268843的博客 2065

MSSQL_4- 索引管理

《锋利的SQL》;SQL Server

Fergus的博客 411

sqlserver怎么查看索引_基于SQLSERVER数据库建立高效的索引

概述生产库中sqlserver怎么也占了三分之一,所以今天主要聊聊怎么在sqlserver数据库上去建索引。1、索引概述创建索引一般有以下两个目的:维护被索引列的唯一性和提供快速访问表中数据的策略。大型数据库有两种索引即簇索引和非簇索引:1)非簇索引的表是按堆结构存储数据,所有的数据均添加在表的尾部;2)簇索引的表,其数据在物理上会按照簇索引键的顺序存储,一个表只允许有一个簇索引。因此,根据B树结...

weixin_39802020的博客 1617
上一篇: layer-v2.4弹层组件使用示例
下一篇: SQLServer创建索引
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值