索引

索引提供指针以指向存储在表中指定列的数据值,然后根据指定的排序次序排列这些指针。数据库使用索引的方式与使用书的目录很相似:通过搜索索引找到特定的值,然后跟随指针到达包含该值的行。

什么是索引

数据库中的索引与书籍中的索引类似,在一本书中,利用索引可以快速查找所需信息,无须阅读整本书。在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据。书中的索引是一个词语列表,其中注明了包含各个词的页码。而数据库中的索引是某个表中列或者若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。

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

索引页是数据库中存储索引的数据页。索引页存放检索数据行的关键字以及该数据行的地址指针。索引页类似于汉语字典中按拼音或笔画排序的目录页。

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

索引分为:唯一索引、主键索引、聚集索引和非聚集索引。

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

如果现有数据中存在重复的键值,则一般情况下大多数数据库都不允许创建唯一索引.当新数据将使表中的键值重复时,数据库会拒绝接受此数据。

提示

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

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

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

提示:

SQL Server 中,一个表只能创建一个聚集索引,但可以有多个非聚集索引。设置莱列为主键,该列就默认为聚集索引。

如何创建索引

创建索引的方法有两种:使用表设计器创建和使用T-SQL语句创建。

(1)在表设计器中以图形化方式创建索引。

运行SSMS在“对象资源管理器”中,右击要设置索引的表,选择“设计”菜单。这样会打开表设计器,执行“表设计器”一“索引/键”菜单,打开创建索引的对话框,如下图。


单击“添加”按钮,添加索引,在右侧可以进-步设 置索引列、指定索引的类型等。

(2)使用T-SQL语句创建索引。

创建索引的语法如下:

create [ unique] [clustered | nonclustered」index 索引名on表名(列1,列2...)

DEMO:

  select * from [Test].[dbo].[Ta]  --查找表格gocreate  CLUSTERED  --创建索引index in_idon [Test].[dbo].[Ta](id)go

UNIQUE表示唯一索引,可选;

CLUSTERED表示聚集索引,可选;

NONCLUSTERED表示非聚集索引,可选。

使用索引可以加快数据检索速度,但为每个字段都建立索引是没有必要的。因为索引自身也需要维护,并占用一定的资源,建议按照下列标准选择建立索引的列。

(1)该列用于频繁搜索。

(2)该列用于对数据进行排序。

建议不要使用下面的列创建索引。

(1)列中仅包含几个不同的值,大部分值都相同。

(12)表中的记录很少。

SQL SERVER 简单的索引理解(超级简单,人人都可以看懂)相关推荐

  1. SQL Server 事务(超级简单,人人都可以看懂)

    事务(Transaction) 事务就是一个工作单元 ,如果某一事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中永久组成部分,如果事物中遇到错误且必须取消或回滚,则所有数据更改均被撤销. ...

  2. Navicat 安装教程(超级简单人人都可以看懂)

    题记:这个是比较老的版本,由于工作中用到的SQLLite小型数据库,所以我安装此版本. Navicat 11 详细安装教程. 软件下载链接:Navicat安装包下载地址 ❶下载并且解压文件夹,然后选择 ...

  3. 小白都能看懂的关于Mixins机制的理解

    前言 ​ 在学习Flutter源码的时候,看到各种复杂的mixin和on,为了便于后续Flutter的学习,这里有必要一起来份详细Dart 的 Mixin机制. 什么是mixins 首先看看官方文档的 ...

  4. 理解SQL SERVER中非聚集索引的覆盖,连接,交叉和过滤

    写在前面:这是第一篇T-SQL查询高级系列文章.但是T-SQL查询进阶系列还远远没有写完.这个主题放到高级我想是因为这个主题需要一些进阶的知识作为基础..如果文章中有错误的地方请不吝指正.本篇文章的内 ...

  5. 重新理解SQL Server的聚集索引表与堆表

    目录 目录 简述SQL Server表的类型 如何区分聚集索引表与堆表 聚集索引表与堆表的正确使用 参考资料 简述SQL Server表的类型 由于当前关系型数据库(RDBMS)种类繁多,存在对标准S ...

  6. Sql Server之旅——第十一站 简单说说sqlserver的执行计划

    原文:Sql Server之旅--第十一站 简单说说sqlserver的执行计划 我们知道sql在底层的执行给我们上层人员开了一个窗口,那就是执行计划,有了执行计划之后,我们就清楚了那些烂sql是怎么 ...

  7. SQL Server中读取XML文件的简单做法

    SQL Server 2000使得以XML导出数据变得更加简单,但在SQL Server 2000中导入XML数据并对其进行处理则有些麻烦.本文介绍在SQL Server中读取XML文件的简单做法. ...

  8. 翻译:SQL Server中的索引内部结构:到SQL Server索引级别10的阶梯。

    SQL Server中的索引内部结构:到SQL Server索引级别10的阶梯. 大卫•杜兰特2012/01/20 该系列 本文是楼梯系列的一部分:SQL Server索引的阶梯. 索引是数据库设计的 ...

  9. SQL Server 深入解析索引存储(非聚集索引)

    标签:SQL SERVER/MSSQL SERVER/数据库/DBA/索引体系结构/非聚集索引 概述 非聚集索引与聚集索引具有相同的 B 树结构,它们之间的显著差别在于以下两点: 基础表的数据行不按非 ...

最新文章

  1. ASP.Net面向对象思想
  2. OpenGL_Qt学习笔记之_05(纹理映射)
  3. linux安装和配置 mysql、redis 过程中遇到的问题记录(转)
  4. Eming cup Problem D. Game of numbers
  5. 简单理解 Kafka 的消息可靠性策略
  6. 2020蓝桥杯省赛---java---B---10(整数小拼接)
  7. 【离散数学】幂集的求解
  8. 网站登录JWT的实现
  9. VPC 2007 Console界面消失以及解决方法
  10. cassss服务未启动_systemd时代的服务管理
  11. fancyupload java_javascript-如何在内部Windows身份验证Intranet上...
  12. linux操作系统中的netstat命令查看端口状态的使用和window操作系统查看端口号
  13. mysql索引和事务_MySQL事务和索引
  14. 网页游戏开发秘笈 PDF扫描版
  15. 管家婆的验证服务器失败,管家婆登陆提示“连接服务器失败”怎么办
  16. Django项目实践(商城):十七、商品详情页面
  17. 移植Python3到TQ2440(二)
  18. PS抠头发妙法(原创技巧)
  19. android2.2智能手机,Jelly 2:全球最小的Android 10 4G智能手机
  20. Gradient descent拙见

热门文章

  1. 阅读模式 html,什么是阅读模式?360浏览器阅读模式如何使用
  2. 点击按钮(button)打开新窗口(window)的几种情况
  3. 非遗造物 匠心守护 昆明南亚风情第壹城非遗文化节等你来玩
  4. 毕业论文开题报告---范文---基于Android的学生考勤管理系统的设计与实现
  5. could not execute menu item系统找不到指定的文件
  6. android studio 安卓新建类如何自动填充作者、时间、备注等信息
  7. Android Cocos2dx引擎 prv.ccz/plist/so等优化缓存文件,手把手ida教你逆向project反编译apk库等文件...
  8. hcitool命令详解
  9. mitmproxy代理工具使用
  10. 51单片机蓝牙通讯精准控制步进电机简易教学