• 数据索引笔记


    1.什么是索引?

    定义:索引是对数据库表中一列或多列的值进行排序的一种结构

    目的:加快对表中记录的查找或排序

    2.索引的类型?

    1.唯一索引:唯一索引是不允许其中任何两行具有相同索引值的索引。
      create unique clustered index myclumn_cindex on mytable(mycolumn)

    2.非唯一索引:非唯一索引是相对唯一索引,允许其中任何两行具有相同索引值的索引
      create index myclumn_cindex on mytable(mycolumn)

    3.主键索引:数据库表经常有一列或列组合,其值唯一标识表中的每一行。(主键索引是唯一索引的特定类型)

      主键也是一个特殊的索引。与唯一索引的区别,一是主键不允许有NULL值而唯一索引可以,二是一个表里只能有一个主键但唯一索引却可以有多个。

    4.聚集索引:在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引 。

    3.索引不利的方面

    1.创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
    2.索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
    3.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

    4.应该创建索引的列

    1、在经常需要搜索的列上
    2、在作为主键的列上(强制该列的唯一性和组织表中数据的排列结构)
    3、在经常用在连接的列上(这些列主要是一些外键,可以加快连接的速度)
    4、在经常需要根据范围进行搜索的列上创建索引(因为索引已经排序,其指定的范围是连续的)
    5、在经常需要排序的列上创建索引(因为索引已经排序)
    6、在经常使用在WHERE子句中的列上面创建索引(加快条件的判断速度)

    5.不应该创建索引的列:

    1、对于那些在查询中很少使用或者参考的列不应该创建索引
    2、对于那些只有很少数据值的列也不应该增加索引。(需要在表中搜索的数据行的比例很大)
    3、对于那些定义为text, image和bit数据类型的列不应该增加索引。
    4、当修改性能远远大于检索性能时,不应该创建索引。

    6.需要注意的

    1、考虑已在表上创建的索引数量。最好避免在单个表上有很多索引。
    2、检查已在表上创建的索引的定义。最好避免包含共享列的重叠索引。
    3、检查某列中唯一数据值的数量,并将该数量与表中的行数进行比较。比较的结果就是该列的可选择性,这有助于确定该列是否适合建立索引,如果适合,确定索引的类型。

  • 相关阅读:
    [hdu5312]数的拆分,数学推导
    [POJ1038]状压DP
    [hdu2112]最短路
    [hdu1532]最大流
    [hdu5256]LIS模型
    [hdu5255]枚举
    [hdu5254]BFS
    [hdu5270]按位统计,容斥,归并
    Elasticsearch在Centos 7上的安装与配置
    手动安装java1.8
  • 原文地址:https://www.cnblogs.com/lovesong/p/3541028.html
Copyright © 2020-2023  润新知