SQL Server创建索引(转)

什么是索引

拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K 。为了加快查找的速度,汉语字(词)典一般都有按拼音、笔画、偏旁部首等排序的目录(索引),我们可以选择按拼音或笔画查找方式,快速查找到需要的字(词)。

同理,SQL Server允许用户在表中创建索引,指定按某列预先排序,从而大大提高查询速度。

          SQL Server中的数据也是按页( 4KB )存放

          索引:是SQL Server编排数据的内部方法。它为SQL Server提供一种方法来编排查询数据

          索引页:数据库中存储索引的数据页;索引页类似于汉语字(词)典中按拼音或笔画排序的目录页。

          索引的作用:通过使用索引,可以大大提高数据库的检索速度,改善数据库性能。

   

索引类型

          唯一索引:唯一索引不允许两行具有相同的索引值

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

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

          非聚集索引(Non-clustered):非聚集索引指定表的逻辑顺序。数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。可以有多个,小于249

   

索引类型:再次用汉语字典打比方,希望大家能够明白聚集索引和非聚集索引这两个概念。

   

唯一索引:

唯一索引不允许两行具有相同的索引值。

如果现有数据中存在重复的键值,则大多数数据库都不允许将新创建的唯一索引与表一起保存。当新数据将使表中的键值重复时,数据库也拒绝接受此数据。例如,如果在stuInfo表中的学员员身份证号(stuID) 列上创建了唯一索引,则所有学员的身份证号不能重复。

提示:创建了唯一约束,将自动创建唯一索引。尽管唯一索引有助于找到信息,但为了获得最佳性能,建议使用主键约束或唯一约束。

   

主键索引:

在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的。当在查询中使用主键索引时,它还允许快速访问数据。

   

聚集索引(clustered index

在聚集索引中,表中各行的物理顺序与键值的逻辑(索引)顺序相同。表只能包含一个聚集索引。例如:汉语字(词)典默认按拼音排序编排字典中的每页页码。拼音字母abcd……xyz就是索引的逻辑顺序,而页码123……就是物理顺序。默认按拼音排序的字典,其索引顺序和逻辑顺序是一致的。即拼音顺序较后的字(词)对应的页码也较大。如拼音"ha"对应的字()页码就比拼音"ba" 对应的字()页码靠后。

   

非聚集索引(Non-clustered)

如果不是聚集索引,表中各行的物理顺序与键值的逻辑顺序不匹配。聚集索引比非聚集索引(nonclustered index)有更快的数据访问速度。例如,按笔画排序的索引就是非聚集索引,"1"画的字(词)对应的页码可能比"3"画的字(词)对应的页码大(靠后)。

提示:SQL Server中,一个表只能创建1个聚集索引,多个非聚集索引。设置某列为主键,该列就默认为聚集索引

   

如何创建索引

使用T-SQL语句创建索引的语法:

CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED]

INDEX index_name

ON table_name (column_name…)

[WITH FILLFACTOR=x]

       UNIQUE表示唯一索引,可选

       CLUSTEREDNONCLUSTERED表示聚集索引还是非聚集索引,可选

       FILLFACTOR表示填充因子,指定一个0100之间的值,该值指示索引页填满的空间所占的百分比

   

stuMarks表的writtenExam列创建索引:

USE stuDB

GO

IF EXISTS (SELECT name FROM sysindexes

WHERE name = 'IX_writtenExam')

DROP INDEX stuMarks.IX_writtenExam

/*--笔试列创建非聚集索引:填充因子为30--*/

CREATE NONCLUSTERED INDEX IX_writtenExam

ON stuMarks(writtenExam)

     WITH FILLFACTOR= 30

GO

/*-----指定按索引 IX_writtenExam 查询----*/

SELECT * FROM stuMarks (INDEX=IX_writtenExam)

WHERE writtenExam BETWEEN 60 AND 90

虽然我们可以指定SQL Server按哪个索引进行数据查询,但一般不需要我们人工指定。SQL Server将会根据我们创建的索引,自动优化查询

   

索引的优缺点

          优点

         加快访问速度

         加强行的唯一性

          缺点

         带索引的表在数据库中需要更多的存储空间

         操纵数据的命令需要更长的处理时间,因为它们需要对索引进行更新

   

创建索引的指导原则

          请按照下列标准选择建立索引的列。

         该列用于频繁搜索

         该列用于对数据进行排序

          请不要使用下面的列创建索引:

         列中仅包含几个不同的值。

         表中仅包含几行。为小型表创建索引可能不太划算,因为SQL Server在索引中搜索数据所花的时间比在表中逐行搜索所花的时间更长

转载于:https://www.cnblogs.com/binlyzhuo/p/3845423.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293353.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Asp.NET Core 一个接口的多个实现如何通过 DI 注册?

咨询区 LP13我有三个 Service 类实现了同一个接口,参考代码如下:public interface IService { } public class ServiceA : IService { } public class ServiceB : IService { } public class ServiceC : IService { }我知道像其他的 DI 容器&#xff0c…

Elixir Ecto: 范围数据类型

从 PostgreSQL 9.2 以来, 可以用特定的操作符和函数存储和查询一个值的范围. 这是一个非常不错的特性, 比如在电子商务应用程序方面, 可以用一个字段 price_range 来替代 min_price, max_price 表示一个价格范围.在Ecto中使用范围数据类型 价格范围的表示方法如下 [0, 45.67] …

我们能复活恐龙吗?

全世界只有3.14 % 的人关注了爆炸吧知识鲁迅曾经说过:“不会画漫画的段子手不是好英语老师”咳咳~ 图图君就是这样一位专注知识科普的双语漫画家长按二维码带你去图图君家串串门儿我们到底能不能复活恐龙?长按二维码关注回复“恐龙”寻找答案吧在这里你不…

思考的技术与艺术

总的来说 1.人类的思维充满着各种各样的捷径,每一条捷径都是一把双刃剑。一方面,它降低了大脑的认知复杂性(笼统的看一个问题要比细致的分析简单得多),有助于迅速做出绝大部分时候都正确的判断;但另一方面…

周期串问题(一)

题目: 题目一[周期串问题] 如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期。例如,abcabcabcabc以3为周期(注意,它也可以6和12为周期,结果取最小周期3) 代码如下: #include <iostream> #include <string> using namespace std;…

eks volumn s3_威客电竞 深渊联赛S3欧洲区总决赛,Secret成就八连冠

威客电竞&#xff0c;亚洲领先的专业电竞赛事预测平台。DOTA PIT深渊联赛线上赛第三赛季经过为期一周的激烈比赛&#xff0c;Secret战队在11支参赛队伍中一路杀进总决赛&#xff0c;与VP.P战队展开巅峰对决。最终Secret战队3:0完胜VP.P战队斩获DOTA PIT S3欧洲区冠军&#xff0…

ANE打包心得

1 ane中的p12证书是fb或者flashide中生成的&#xff08;例如air工程生成的p12&#xff09;&#xff0c;不是苹果账号的p12 2 打包bat中的 -platform 要和 extension.xml中的platform节点相对应 3 -C iPhone-ARM . 末尾的点要记得写 4 这就是个坑爹货啊&#xff01;转载于:…

初探IdentityServer4(客户端模式)

Oatuth2协议的客户端模式介绍Client Credentials Grant &#xff08;客户端模式&#xff09;是Oauth2.0协议中&#xff0c;四种模式自建单的一种。它由两部分构成&#xff0c;客户端和认证服务器。认证服务器确认客户端无误后返回一个token&#xff0c;客户端请求带着token访问…

2596 售货员的难题

2596 售货员的难题 时间限制: 1 s空间限制: 32000 KB题目等级 : 钻石 Diamond题解题目描述 Description某乡有n个村庄(1<n<&#xff1d;15)&#xff0c;有一个售货员&#xff0c;他要到各个村庄去售货&#xff0c;各村庄之间的路程s(0<s<1000)是已知的&#xff0c;…

研究表明:胸部大小其实早已.....

1 这样就能不战而胜了&#xff08;素材源于网络&#xff0c;侵删&#xff09;▼2 说好的情比金坚呢&#xff1f;▼3 整挺好&#xff0c;锅都不用洗了&#xff08;via.豆瓣撕破伤口、&#xff09;▼4 就是这么自信▼5 什么丝袜这么厉害▼6 好家伙&#xff0c;请问还需要女婿…

Java学习笔记之 IO包 字节流

IO包最重要的五个类和一个接口 File/OutputStream/InputStream(字节流)/Writer/Reader(字符流) 一个接口&#xff1a;Serializable File类&#xff1a; 字节流&#xff1a; OutputStream与InputStream是抽象类 OutputStream是整个IO包中&#xff0c;字节输出流的最大类 Fi…

周期串问题(二)

题目&#xff1a; 题目一[周期串问题] 如果一个字符串可以由某个长度为k的字符串重复多次得到&#xff0c;我们说该串以k为周期。例如&#xff0c;abcabcabcabc以3为周期&#xff08;注意&#xff0c;它也可以6和12为周期,结果取最小周期3&#xff09; 代码如下&#xff1a; …

bootstrap bootstraptable 固定列_1个Excel公式按条件自定义格式显示固定电话号码

点击右上角“关注”&#xff0c;每天免费获取干货教程前面写了很多篇关于数据查询、数据统计、数据分析、公式排错的教程&#xff0c;今天换一个口味&#xff0c;写个关于自定义格式显示数据的教程。因为工作中很多时候都需要按照指定的要求将数据源整理成固定的格式&#xff0…

记一次引入Elasticsearch的系统架构实战

前言我曾经面试安踏的技术岗&#xff0c;当时面试官问了我一个问题&#xff1a;如果你想使用某个新技术但是领导不愿意&#xff0c;你怎么办&#xff1f;对于该问题我相信大家就算没有面试被问到过&#xff0c;现实工作中同事之间的合作也会遇到。 因此从我的角度重新去回答这…

rsync 安装使用详解

RSYNC软件介绍&#xff1a; rsync是类unix系统下的数据镜像备份工具&#xff0c;从软件的命名上就可以看出来了——remote sync。它的特性如下&#xff1a;可以镜像保存整个目录树和文件系统。可以很容易做到保持原来文件的权限、时间、软硬链接等等。无须特殊权限即可安装。优…

【 Tomcat 】tomcat8.0 调优配置

2019独角兽企业重金招聘Python工程师标准>>> 1、优化内核及TCP连接&#xff1a; fs.file-max 655350  # 系统文件描述符总量 net.ipv4.ip_local_port_range 1024 65535  # 打开端口范围 net.ipv4.tcp_max_tw_buckets 2000  # 设置tcp连接时TIME_WAIT个数 n…

[转]ORACLE 异常错误处理

本文转自&#xff1a;http://www.cnblogs.com/soundcode/archive/2012/01/10/2318385.html 本篇主要内容如下&#xff1a; 5.1 异常处理概念 5.1.1 预定义的异常处理 5.1.2 非预定义的异常处理 5.1.3 用户自定义的异常处理 5.1.4 用户定义的异常处理 5.2 异常错误传播 5.2.1 在…

java.io.StreamCorruptedException: invalid type code: AC解决办法

.java.io.StreamCorruptedException: invalid type code: AC解决办法问题描述&#xff1a; 在向一个文件写入可序列化对象时&#xff0c;每次只想向文件的末尾添加一个可序列化的对象&#xff0c;于是使用了FileOutputStream&#xff08;文件名&#xff0c;true&#xff09;间接…

abb机器人指令手册_第1519课 ABB机器人初级教程

每一位读者都是我分享的动力&#xff0c;感谢大家关注&#xff01;第15课 系统输入输出与IO信号的关联第16课 示教器可编程按钮的使用第17课 什么是程序数据第18课 程序数据的类型与分类第19课 创建程序数据第15课第16课第17课第18课第19课每一位读者都是我分享的动力&#xff…