zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    一LWIP学习笔记之数据包管理
    智能家居的发展趋势
    break和continue的区别
    TCP与UDP区别总结
    C语言变量和函数命名规范
    常用电子元件
    php 1018
    php 1016
    mysql 应用查询 三个表(学生表,课程表,学生课程分数表) student, course, score表
    mysql 聚合函数
  • 原文地址:https://www.cnblogs.com/wyy1234/p/9037196.html
Copyright © 2011-2022 走看看