Sqlserver中的索引
一、什么是索引及索引的优缺点
1.1 索引的基本概念
数据库索引,是数据库管理系统中一个排序的数据结构,用来协助快速查询数据库表中数据。
简单理解索引就是一个排好顺序的目录,设置了索引就意味着进行了排序,利用排序快速查找数据(如:不排序就不能使用二分查找,只能全局扫描)。
1.2 索引的优缺点及使用场景
优点:
① 可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
② 利于分组和排序。
③ 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
缺点:
① 建立索引需要额外物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
② 当对表中的数据进行增加、删除和修改的时候,耗费性能去动态的维护索引。
建议使用场景:
经常需要搜索的列上(如经常Where条件查询的列);
主键列,强制该列的唯一性和组织表中数据的排列结构;
外键列,可以加快多表连接的速度;
在经常需要根据进行范围搜索和排序操作的列上,因为索引已经排序,其指定的范围是连续的;
不建议添加索引的场合:
不同值很少的列,如性别列,因为查询出来的结果集很多,不能明显优化查询。
数据类型为text, image和bit列。这是因为,这些列的数据量要么相当大,要么取值很少。
频繁插入、删除、修改的列,因为动态维修索引降低了操作效率。
二、索引的分类
三种索引:唯一索引、聚集索引(物理索引)和非聚集索引(逻辑索引)。
2.1 唯一索引 ps:一般直接用唯一约束
唯一索引是不允许其中任何两行具有相同索引值的索引,建立唯一约束时默认添加唯一索引,如身份证号码列,一张表可以有多个唯一索引。
主键索引(不能为空)是一种特殊的唯一索引,优先级更高,设置主键是默认添加了主键索引。
2.2 聚集索引与非聚集索引
在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引,默认是主键列,聚集索引通常提供更快的数据访问速度。
非聚集索引可以有多个,物理顺序与键值的逻辑(索引)顺序可以不相同。一个简单的例子:对一个教室的学生,每个人都有一个座位号(座位是物理存在的,只有一种排序,这就是聚集索引),我们可以按学生的年龄、身高、体重排序(这样排出来的顺序座号不连续即物理上不连续,在逻辑上是连续的,就是非聚集索引)
三、使用索引
使用索引很简单,下边是代码:
--添加索引
--语法
--create [clustered,unique,nonclustered] index indexName on tableName(colName)
create clustered index index_id on userInfo(Id) --Id列添加聚集索引(设置主键是自动添加)
create unique index index_perId on UserInfo(usergender) --身份证号添加唯一索引(添加唯一约束自动添加)
create nonclustered index index_age on UserInfo(Age desc) --年龄列添加非聚集索引
--删除索引
--语法
--drop index TableName.IndexName[,TableName.IndexName2]
drop index UserInfo.index_perId
本文参考:
1、https://blog.csdn.net/kennyrose/article/details/7532032
2、https://www.cnblogs.com/hyd1213126/p/5828937.html
Sqlserver中的索引的更多相关文章
- sqlserver中 事物 索引及视图
事务 1.什么是事务 事务是一个不可分割的工作逻辑单元,它包含了一组数据库的操作命令,并且所有命令作为一个整体一起向系统提交或撤销操作请求,即要么都执行,要么都不执行 2.事务的4个属性 (1). ...
- SqlServer中查看索引的使用情况
--查看数据库索引的使用情况 select db_name(database_id) as N'TOPK_TO_DEV', --库名 object_name(a.object_id) as N'Top ...
- SQLServer中使用索引视图
在SQL Server中,视图是一个保存的T-SQL查询.视图定义由SQL Server保存,以便它能够用作一个虚拟表来简化查询,并给基表增加另一层安全.但是,它并不占用数据库的任何空间.实际上,在你 ...
- SQLServer中使用索引视图(物化视图)
物化视图:以前用的普通的视图,普通视图就是一段逻辑语句,对性能没有任何的提升,也不能创建索引,而物化视图会把视图里查询出来的数据在数据库上建立快照,它和物理表一样,可以创建 索引,主键约束等等,性能会 ...
- MySql SqlServer Sqlite中关于索引的创建
最近要更新Cocon90.Db库,令其ORM创建表时实现索引的添加.因此总结下列常用Sql,供大家学习与参考. 一.SqlServer中创建索引可以这样: ) Create Table Test ( ...
- SqlServer中Index Seek的匹配规则(一)
我们知道在SqlServer中,索引对查询语句的优化起着巨大的作用,一般来说在执行计划中出现了Index Seek的步骤,我们就认为索引命中了.但是Index Seek中有两个部分是值得我们注意的,我 ...
- 解决“动软代码生成器在SqlServer中会将唯一索引识别为主键"的Bug
动软代码生成器在SqlServer中,生成的代码会将唯一索引错误地识别为主键, 反编译源代码后,发现其中的SQL条件有误,现修复此Bug. 修复方法:将附件中的”Maticsoft.DbObjects ...
- SQLSERVER中如何忽略索引提示
SQLSERVER中如何忽略索引提示 当我们想让某条查询语句利用某个索引的时候,我们一般会在查询语句里加索引提示,就像这样 当在生产环境里面,由于这个索引提示的原因,优化器一般不会再去考虑其他的索引, ...
- SQLServer中在视图上使用索引(转载)
在SQL Server中,视图是一个保存的T-SQL查询.视图定义由SQL Server保存,以便它能够用作一个虚拟表来简化查询,并给基表增加另一层安全.但是,它并不占用数据库的任何空间.实际上,在你 ...
随机推荐
- robotframework中RIDE的下载及安装
1.首先说一下我当前的环境配置 win10系统64位 python3.6.5,已配置环境变量 2.安装RIDE前需要安装的依赖包(使用pip就可以直接安装) 首先必须有robotframework这就 ...
- hdu 4825 Xor Sum (01 Trie)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4825 题面: Xor Sum Time Limit: 2000/1000 MS (Java/Others) ...
- composer阿里云短信服务不支持传参为数值--为2017年短信接口,2018阿里云有更新http://www.cnblogs.com/q1104460935/p/8916096.html
composer 阿里云短信服务使用 xuying/aliyun_mns 更新到2017年初,不再更新 ){;, ); }; } ; }; }; }} 以下为发送成功返回对象 object(A ...
- 「CodeForces - 717E」Paint it really, really dark gray (dfs)
BUPT 2017 summer training (for 16) #1H 题意 每个节点是黑色or白色,经过一个节点就会改变它的颜色,一开始在1节点.求一条路径使得所有点变成黑色. 题解 dfs时 ...
- 【BZOJ5302】[HAOI2018]奇怪的背包(动态规划,容斥原理)
[BZOJ5302][HAOI2018]奇怪的背包(动态规划,容斥原理) 题面 BZOJ 洛谷 题解 为啥泥萌做法和我都不一样啊 一个重量为\(V_i\)的物品,可以放出所有\(gcd(V_i,P)\ ...
- ZOJ 4062 Plants vs. Zombies(二分答案)
题目链接:Plants vs. Zombies 题意:从1到n每个位置一棵植物,植物每浇水一次,增加ai高度.人的初始位置为0,人每次能往左或往右走一步,走到哪个位置就浇水一次.求m步走完后最低高度的 ...
- LOJ#6277. 数列分块入门 1
分块思想,先把原来的序列分成根号n快,然后对于更新的部分,先操作这个序列边上的部分,然后再中间部分整块操作,这样复杂度就是O(根号N) #include<map> #include< ...
- ACM-ICPC 2015 BeiJing
比赛连接:ACM-ICPC 2015 BeiJing 本次比赛只写了 A G 然后 I题随后补 A 有一个正方形土地,上面有若干块绿洲.让你以x0为界限划一条竖线,要求左边绿洲面积>=右 ...
- A1076. Forwards on Weibo
Weibo is known as the Chinese version of Twitter. One user on Weibo may have many followers, and may ...
- 【洛谷P2925 [USACO08DEC]干草出售Hay For Sale】
题意翻译 题目描述 农民john面临一个很可怕的事实,因为防范失措他存储的所有稻草给澳大利亚蟑螂吃光了,他将面临没有稻草喂养奶牛的局面.在奶牛断粮之前,john拉着他的马车到农民Don的农场中买一些稻 ...