数据索引笔记

简介:

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、检查某列中唯一数据值的数量,并将该数量与表中的行数进行比较。比较的结果就是该列的可选择性,这有助于确定该列是否适合建立索引,如果适合,确定索引的类型。

 

分类:  7.后端基础


本文转自 海角在眼前 博客园博客,原文链接: http://www.cnblogs.com/lovesong/p/3541028.html   ,如需转载请自行联系原作者
相关文章
|
9月前
|
存储 索引
【软考学习15】索引文件结构、直接索引和间接索引
【软考学习15】索引文件结构、直接索引和间接索引
233 0
|
9月前
|
存储 关系型数据库 MySQL
索引就看这一篇就够了!
索引就看这一篇就够了!
|
分布式计算 资源调度 Hadoop
创建索引库和索引_说明|学习笔记
快速学习创建索引库和索引_说明。
74 0
|
JSON 数据格式 开发者
创建索引库和索引说明 | 学习笔记
快速学习创建索引库和索引说明
115 0
创建索引库和索引说明 | 学习笔记
|
NoSQL MongoDB 数据库
唯一索引|学习笔记
快速学习唯一索引
61 0
|
关系型数据库 MySQL 数据库
哪些情况不适合建索引|学习笔记
快速学习哪些情况不适合建索引
181 0
|
关系型数据库 MySQL 开发者
哪些情况适合建索引|学习笔记
快速学习哪些情况适合建索引
144 0
|
存储 SQL 算法
索引是什么|学习笔记
快速学习索引是什么
105 0
索引是什么|学习笔记
|
存储 关系型数据库 索引
第七章《索引》
第七章《索引》
第七章《索引》
|
存储 机器学习/深度学习 缓存
FaissPQ索引简介
FaissPQ索引简介
209 0
FaissPQ索引简介