- 浏览: 2050060 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (795)
- java (263)
- 聚类搜索引擎 (9)
- 经验之谈 (67)
- DSP (3)
- C++ (140)
- Linux (37)
- SNMP (6)
- Python (6)
- 数据库 (61)
- 网络 (20)
- 算法 (15)
- 设计模式 (4)
- 笔试题 (38)
- 散文 (35)
- 数据结构 (9)
- 银行知识 (0)
- 榜样 (9)
- Lucene (15)
- Heritrix (6)
- MetaSeeker (0)
- netbeans (12)
- php (3)
- 英语 (8)
- DB2 (0)
- java基础 (5)
- mongodb & hadoop (4)
- Javascript (7)
- Spring (4)
- ibatis & myibatis (1)
- velocity (1)
- 微服务 (0)
- paddle (1)
- 第三方 (0)
- 知识沉淀 (1)
- 建模 (0)
最新评论
-
0372:
标示对java很陌生!
中文乱码解决的4种方式 -
梦留心痕:
Java中\是转意字符, 可是你的这句话我没看懂,只要把得到的 ...
java中如何忽略字符串中的转义字符--转载 -
yanjianpengit:
[b][/b]
java为什么非静态内部类里面不能有静态成员 -
springdata-jpa:
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
eclipse 如何把java项目转成web项目 -
qq1130127172:
,非常好。
(转)SpringMVC 基于注解的Controller @RequestMapping @RequestParam..
1.概念
索引是在数据库表或者视图上创建的对象,目的是为了加快对表或视图的查询的速度(简单理解)。
索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单(深刻理解)。
按照存储方式分为:聚集与非聚集索引(需要重视和区别的概念,后面详解)
按照维护与管理索引角度分为:唯一索引、复合索引和系统自动创建的索引(相对简单,如下解释:)
1).唯一索引:惟一索引可以确保索引列不包含重复的值.
可以用多个列,但是索引可以确保索引列中每个值组合都是唯一的,
即下面的姓不能有重复,同时名也不能有重复:
姓 名
李 二
张 三
王 五
语法: create unique index idxempid on emp(姓,名)
2).复合索引:如果在两上以上的列上创建一个索引,则称为复合索引。
那么,不可能有两行的姓和名是重复的,即上面的表没有两行其姓和名的组合是一样的。
语法: create index indxfullname on emp(姓,名)
3).系统自建的索引:在使用T_sql语句创建表的时候使用PRIMARY KEY或UNIQUE约束时,会在表上
自动创建一个惟一索引,自动创建的索引是无法删除的。
语法:
create table ABC
( empID int PRIMARY KEY,
firstname varchar(50) UNIQUE,
lastname varchar(50) UNIQUE,
) /*这样的结果就出来了三个索引,但只有一个聚集索引empID*/
索引的结构是由:根节点--->非叶节点--->非叶节点--->叶节点(注意索引在数据库引擎中所用的
内部数据结构一般是B+树,参考后文)
聚集索引和非聚集索引——
用一个现实中的例子说明以助理解。我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。如果您翻完了所有以“a”开头的部分仍然找不到这个字,那么就说明您的字典中没有这个字;同样的,如果查“张”字,那您也会将您的字典翻到最后部分,因为“张”的拼音是“zhang”。也就是说,字典的正文部分本身就是一个目录,您不需要再去查其他目录来找到您需要找的内容。
我们把这种正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。
如果您认识某个字,您可以快速地从自动中查到这个字。但您也可能会遇到您不认识的字,不知道它的发音,这时候,您就不能按照刚才的方法找到您要查的字,而需要去根据“偏旁部首”查到您要找的字,然后根据这个字后的页码直接翻到某页来找到您要找的字。但您结合“部首目录”和“检字表”而查到的字的排序并不是真正的正文的排序方法,比如您查“张”字,我们可以看到在查部首之后的检字表中“张”的页码是672页,检字表中“张”的上面是“驰”字,但页码却是63页,“张”的下面是“弩”字,页面是390页。很显然,这些字并不是真正的分别位于“张”字的上下方,现在您看到的连续的“驰、张、弩”三字实际上就是他们在非聚集索引中的排序,是字典正文中的字在非聚集索引中的映射。我们可以通过这种方式来找到您所需要的字,但它需要两个过程,先找到目录中的结果,然后再翻到您所需要的页码。
我们把这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。
2.性质及使用方法
1)聚集索引:表中存储的数据按照索引的顺序存储,检索效率比普通索引高,索引占用硬盘
存储空间小(1%左右),但对数据新增/修改/删除的速度影响比较大(降低)。
特点:
(1) 无索引,数据无序
(2) 有索引,数据与索引同序
(3) 数据会根据索引键的顺序重新排列数据
(4) 一个表只能有一个索引
(5) 叶节点的指针指向的数据也在同一位置存储
语法:create CLUSTERED INDEX idxempID ON emp(empID)
2)非聚集索引:不影响表中的数据存储顺序,检索效率比聚集索引低,索引占用硬盘存储 动作描述 使用聚集索引 使用非聚集索引 列经常被分组排序 应 应 返回某范围内的数据 应 不应 一个或极少不同值 不应 不应 小数目的不同值 应 不应 大数目的不同值 不应 应 频繁更新的列 不应 应 外键列 应 应 主键列 应 应 频繁修改索引列 不应 应
空间大(30%~40%),对数据新增/修改/删除的影响很少。
特点:
(1) 一个表可以最多可以创建249个非聚集索引
(2) 先建聚集索引才能创建非聚集索引
(3) 非聚集索引数据与索引不同序
(4) 数据与非聚集索引在不同位置
(5) 非聚集索引在叶节点上存储,在叶节点上有一个“指针”直接指向要查询的数据区域
(6) 数据不会根据非聚集索引键的顺序重新排列数据
语法:create NONCLUSTERED INDEX idximpID ON emp(empID)
创建索引的方法:
1)企业管理器中
(1)右击某个表,所有任务---管理索引,打开管理索引,单击“新建”就可以创建索引
(2)在设计表中进行设计表,管理索引/键
(3)在关系图中,添加表后右击关系图中的某个表,就有“索引/键”
(4)通过向导,数据库---创建索引向导
(5)通过T-SQL语句
2)能过“索引优化向导”来优化索引的向导,通过它可以决定选择哪些列做为索引列
3.数据库引擎中索引的内部结构
有必要先说明一下数据库引擎,
这部分是较深的内容,需要有一定的数据库理论知识和数据结构与算法知识,数据结构和算法告诉我们,对索引关键字进行快速查找时要使用树形数据结构,在数据库引擎中,索引通常用B+树来表示,google发现这方面的文章较少,后面找到相关详细资料会补充。
4.主键、索引、聚集索引和非聚集索引
1)主键 (PK)
唯一标识表中的所有行的一个列或一组列。主键不允许空值。不能存在具有相同的主键值的两个
行,因此主键值总是唯一标识单个行。表中可以有不止一个键唯一标识行,每个键都称作候选键。只有
一个候选键可以选作表的主键,所有其它候选键称作备用键。尽管表不要求具有主键,但定义主键是很
好的做法。 在规范化的表中,每行中的所有数据值都完全依赖于主键。例如,在以 EmployeeID 作为
主键的规范化的 employee 表中,所有列都应包含与某个特定职员相关的数据。该表不具有
DepartmentName 列,因为部门的名称依赖于部门 ID,而不是职员 ID。
2)索引
关系数据库中基于键值提供对表的行中数据的快速访问的数据库对象。索引还可以在表的行上强制唯
一性。SQL Server 支持聚集索引和非聚集索引。对表的主键自动进行索引。在全文搜索中,全文索引
存储关于重要词和这些词在给定列中的位置的信息。
如果某列有多行包含 NULL 值,则不能在该列上创建唯一索引。同样,如果列的组合中有多行包
含 NULL 值,则不能在多个列上创建唯一索引。在创建索引时,这些被视为重复的值。
3)聚集索引
在创建聚集索引时,将会对表进行复制,对表中的数据进行排序,然后删除原始的表。因此,数据库
上必须有足够的空闲空间,以容纳数据复本。默认情况下,表中的数据在创建索引时排序。但是,如果
因聚集索引已经存在,且正在使用同一名称和列重新创建,而数据已经排序,则会重建索引,而不是从
头创建该索引,以自动跳过排序操作。重建操作会检查行是否在生成索引时进行了排序。如果有任何行
排序不正确,即会取消操作,不创建索引。
4)非聚集索引
非聚集索引与课本中的索引类似。数据存储在一个地方,索引存储在另一个地方,索引带有指针指向
数据的存储位置。索引中的项目按索引键值的顺序存储,而表中的信息按另一种顺序存储(这可以由聚
集索引规定)。如果在表中未创建聚集索引,则无法保证这些行具有任何特定的顺序。
打开设计表界面里面有个钥匙就是主键的意思,当你声明一列为主键的时候数据库实际上就是生成一个
唯一的索引,查询优化器实际上是根据列上有没有唯一索引来保证列的唯一性而不是根据列是否被声明为主键。
聚集索引一个表只有一个,实际上它的叶子节点就是数据页,比非聚集索引速度快,占用的空间小,大概只有表的1%左右。如果在声明的时候没有选择UNIQUE选项,则在插入数据的时候会自动生成一个唯一标示符。
非聚集索引一个表可以有多个,一个3层的非聚簇索引要查询6次才可以找到真实数据,因为其叶子节点并不是真实数据,而是标识(如果表上有聚集索引则为聚集索引,如没有,则为实际数据的页号),非聚集索引通常占用空间比较大,表的30-40%。
(转帖)http://blog.csdn.net/cnkiminzhuhu/archive/2008/08/01/2751829.aspx
发表评论
-
利用JDBC获取新插入记录id的三种方法
2016-11-12 20:26 1894在一对多的关联操作中,通常在一方插入记录后,需要获取到当前记 ... -
Selector 和 Paging
2015-10-10 11:19 1594import java.util.List; impo ... -
Hibernate Dao辅助类,提供Dao的基本操作
2015-10-10 10:50 3655import java.io.Serializable; ... -
批处理batch,执行多个SQL语句
2015-07-15 19:21 10616批处理batch,执行多个SQL语句。 ... -
Mysql字符集设置(转)
2015-05-08 20:00 1280最近,在项目组使用 ... -
MySQL的btree索引和hash索引的区别
2015-03-27 17:24 17490Hash 索引结构的特殊性,其检索效率非常高,索引的检索 ... -
关于MYSQL Innodb 锁行还是锁表
2015-03-18 10:08 1970关于mysql的锁行还是锁表,这个问题,今天算是有了一点头 ... -
XA分布式事务处理
2014-08-22 18:06 1654在谈到 XA 规范之前,必须首先了解分布式事务处理( Dis ... -
sql中in 与exists
2014-07-15 12:46 1383NOT IN SELECT DISTINCT MD001 ... -
hibernate的query.scroll()和query.setFirstResult(),query.setMaxResults();
2014-07-01 08:19 2024一、hibernate的query.scroll()和que ... -
长连接和短连接的区别
2014-06-25 16:46 3448短连接 连接->传输数据->关闭连接 HTTP是无 ... -
MySQL 读写分离
2014-06-24 15:20 0一 什么是读写分离 ... -
(转)mysql分表与分区表
2014-06-24 15:17 0一,什么是mysql分表,分区 什么是分表,从表面意思上看 ... -
MySQL表的分区
2014-06-24 15:08 0一、什么是表分区通俗地讲表分区是将一大表,根据条件分割成若 ... -
数据库表的拆分
2014-06-24 14:37 2657下面来分析一下: ... -
(转)聚集索引
2014-06-15 14:47 1086在上一篇文章中,我们已经介绍了非聚集索引相关的内容。在本篇 ... -
Google的神器
2014-05-28 21:31 11211 Chubby http://blog.csd ... -
LSM树--高效的存储
2014-05-10 09:11 3172转http://bofang.iteye.com/blog/ ... -
(转)一致性哈希算法
2014-05-08 21:58 1196转帖:http://mntms.iteye.com/blog ... -
Jedis使用
2014-05-08 21:33 1494目录 1 JEDIS简介 1 2 JEDIS简单使用 1 3 ...
相关推荐
CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
样本图:blog.csdn.net/2403_88102872/article/details/144566118 文件放服务器下载,请务必到电脑端资源预览或者资源详情查看然后下载 数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):686 标注数量(json文件个数):686 标注类别数:3 标注类别名称:["unripe","ripe","rotten"] 每个类别标注的框数: unripe count = 2452 ripe count = 1268 rotten count = 710 使用标注工具:labelme=5.5.0 标注规则:对类别进行画多边形框polygon 重要说明:可以将数据集用labelme打开编辑,json数据集需自己转成mask或者yolo格式或者coco格式作语义分割或者实例分割 特别声明:本数据集不对训练的模型或者权重文件精度作任何保证,数据集只提供准确且合理标注
这个项目是一个全面的密码学学习工具,适合作为Rust编程和密码学入门项目。希望这个项目能帮助你提升Rust编程技能,并深入理解密码学原理!
LabSpec6 软件功能参考文献
CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用IAR软件开发,当前在CC2540/CC2541上运行,如果是其他型号芯片,请自行调整。 3、软件下载时,请注意接上硬件,并确认烧录器连接正常。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。 9、例程具有一定专业性,非专业人士请谨慎操作。
CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
【DELM回归预测】基于matlab蜂虎狩猎算法改进深度学习极限学习机BEH-DELM数据回归预测【Matlab仿真 3847期】
Acronis Backup:Acronis备份软件的自动化与脚本编写.docx
CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
阿德范德萨发范德萨范德萨范德萨范德萨范德萨发
【风电功率预测】基于matlab蛇群算法优化长短时记忆网络SO-LSTM风电数据预测(含前后对比)【Matlab仿真 3913期】
CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
基于K最近邻(KNN)的随机森林分类器 它结合了ID3决策树算法和KNN的思想,用于分类任务 ID3决策树算法与K近邻(KNN)结合的随机森林分类器 ID3决策树分类器
深圳混泥土搅拌站商砼泵送与浇筑点检查细则
CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
Acronis Backup:Acronis备份数据的加密与安全.docx
本系统前端主要功能包括新闻、公告的查看,在线留言等。后台主要功能包括新闻管理、留言管理、用户管理等。 环境说明: 开发语言:Java,jsp JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea 部署容器:tomcat
深圳混泥土搅拌站生产管理制度