iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >SQLServer创建索引的5种方法小结
  • 726
分享到

SQLServer创建索引的5种方法小结

SQLServer创建索引SQLServer索引创建 2023-04-26 11:04:30 726人浏览 独家记忆
摘要

目录前期准备:创建聚集索引方法 1、方法 2、创建复合索引创建覆盖索引创建唯一索引筛选索引总结:前期准备: create table Employee ( ID int not null prim

前期准备:

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

SQLServer创建索引的5种方法小结

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

drop index Employee.PK__Employee__3214EC277D95E615;
go

SQLServer创建索引的5种方法小结

方法 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

查看创建的索引

SQLServer创建索引的5种方法小结

创建复合索引

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

SQLServer创建索引的5种方法小结

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

create index ix_com_Employee_IDCreditCardID on Employee(ID,Credit_Card_ID);

看到这句话,你先问一下自己它有没有错!

SQLServer创建索引的5种方法小结

可以发现它错了,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

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

首先:

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

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

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

创建唯一索引

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');

SQLServer创建索引的5种方法小结

这下我们为表加唯一索引,它定义在ID这个列上

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

SQLServer创建索引的5种方法小结

结论 1、 如果在列上有重复值,就不可以在这个列上定义,唯一索引。

下面我们把表清空:truncate table Employee

SQLServer创建索引的5种方法小结

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

create unique index ix_uni_Employee_ID on Employee(ID);
go

SQLServer创建索引的5种方法小结

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

SQLServer创建索引的5种方法小结

结论 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 的数据感兴趣,就可以这样做。

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

总结:

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 ); 这样可以压缩索引大小

到此这篇关于sqlServer创建索引的5种方法小结的文章就介绍到这了,更多相关SQLServer创建索引内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

您可能感兴趣的文档:

--结束END--

本文标题: SQLServer创建索引的5种方法小结

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

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

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

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

下载Word文档
猜你喜欢
  • SQLServer创建索引的5种方法小结
    目录前期准备:创建聚集索引方法 1、方法 2、创建复合索引创建覆盖索引创建唯一索引筛选索引总结:前期准备: create table Employee ( ID int not null prim...
    99+
    2023-04-26
    SQLServer创建索引 SQLServer索引创建
  • 【创建索引的三种方式】
    创建索引的三种方式 第一种方式:在执行 CREATE 第二种方式:使用 ALTER TABLE 命令去增加索 ALTER TABLE table_name ADD INDEX index_name ...
    99+
    2023-09-02
    数据库 mysql sql
  • mysql创建索引的3种方法实例
    目录1、使用CREATE INDEX创建,语法如下:2、使用ALTER语句创建,语法如下:3、建表的时候创建索引补充:mysql 创建索引原则总结1、使用CREATE INDEX创建,语法如下: CREATEINDEXi...
    99+
    2023-02-15
    mysql创建索引语句 mysql索引创建 mysql添加索引语句
  • pandas创建series的三种方法小结
    目录pandas创建series方法创建方法一Series 创建方法二Series 创建方法三Pandas的Series常用方法1. 创建Series2. Series追加3. Se...
    99+
    2024-04-02
  • MySQL几种创建索引的方式
    一、创建表时创建索引 key 索引名 (column); 二、表创建好后创建索引 通过Alter创建索引 ①PRIMARY  KEY(主键索引)         mysql > ALTER  TABLE  `table_name`  A...
    99+
    2023-09-01
    mysql
  • mysql 创建索引的三种方式
    1、使用CREATE INDEX创建,语法如下: CREATE INDEX indexName ON tableName (columnName(length)); 2、使用ALTER语句创建,语法如下: ALTER TABLE ...
    99+
    2023-09-07
    mysql
  • 给Myql创建索引的方法
    这篇文章主要介绍给Myql创建索引的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!为了提升Mysql的性能我们可以创建索引,来提升Mysql的搜索速度,还可以缓解对Mysql数据...
    99+
    2024-04-02
  • JavaScript声明函数的5种方法小结
    目录声明函数的5种方法1.Function声明2.匿名函数3.函数表达式箭头函数5.构造函数哪种方式最好?在编写JavaScript代码中,函数是我们经常会写到的。但是在不同的工程师...
    99+
    2023-02-17
    JavaScript声明函数
  • Java中List分片的5种方法小结
    目录简介 1.Google Guava 2.apache commons 3.Hutool 4.JDK 5.自定义分片 总结 前些天在实现 MyBatis 批量插入时遇到了一个问题,...
    99+
    2024-04-02
  • sql创建索引的方式有哪几种
    在SQL中,可以通过以下几种方式来创建索引: 在创建表的时候指定索引:在创建表的SQL语句中,可以通过在字段声明后面添加"...
    99+
    2024-04-09
    sql
  • 总结Java中创建并写文件的5种方式
    1. 使用FileOutputStream类:通过创建一个FileOutputStream对象来写入文件。可以使用该类的write(...
    99+
    2023-09-22
    Java
  • Mysql创建json字段索引的两种方式
    目录一、前言二、通过虚拟列添加索引(Secondary Indexes and Generated Columns)三、多值索引(Using multi-valued Indexes)四、官网地址一、前言 jsON 数据...
    99+
    2023-06-09
    Mysql创建json字段索引 Mysql json创建索引
  • oracle索引创建的方法是什么
    在Oracle数据库中,可以使用以下几种方法来创建索引:1. CREATE INDEX语句:使用CREATE INDEX语句可以手动...
    99+
    2023-08-28
    oracle
  • mysql创建索引的方法有哪些
    小编给大家分享一下mysql创建索引的方法有哪些,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!在执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX或ALTER...
    99+
    2024-04-02
  • postgresql索引创建的方法是什么
    在PostgreSQL中,可以使用以下方法来创建索引: 创建唯一索引: CREATE UNIQUE INDEX index_na...
    99+
    2024-04-09
    postgresql
  • Mysql为json字段创建索引的两种方式
    目录 一、前言二、通过虚拟列添加索引(Secondary Indexes and Generated Columns)三、多值索引(Using multi-valued Indexes)四、官...
    99+
    2023-09-24
    mysql json 数据库
  • python pandas创建多层索引MultiIndex的6种方式
    目录引言pd.MultiIndex.from_arrays()pd.MultiIndex.from_tuples()列表和元组是可以混合使用的pd.MultiIndex.from_p...
    99+
    2024-04-02
  • Numpy中创建数组的9种方式小结
    目录1、使用empty方法创建数组2、使用array创建数组3、使用zeros/ones创建数组4、使用arange创建数组5、使用linspace创建数组6、使用numpy.ran...
    99+
    2024-04-02
  • Java中创建对象的5种方式
    作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象。然而这里有很多创建对象的方法,我们会在这篇文章中学到。Java中有5种创建对象的方式,下面给出它们的例子还有它们的字节码使用new关键字} →...
    99+
    2023-06-03
  • springboot创建线程池的两种方式小结
    目录springboot创建线程池两种方式1.使用static代码块创建2.使用@Configuration @bean注解,程序启动时创建springboot如何开启线程池定义线程...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作