数据索引笔记
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、检查某列中唯一数据值的数量,并将该数量与表中的行数进行比较。比较的结果就是该列的可选择性,这有助于确定该列是否适合建立索引,如果适合,确定索引的类型。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)