普通索引和唯一索引的区别以及何时需要建立索引

           

大家好,我是IT修真院上海分院第6期学员,一枚正直善良的JAVA程序员。

今天给大家分享一下,修真院官网JAVA任务1中普通索引和唯一索引的区别以及何时建立索引的探讨。

一、背景介绍

索引作用:简而言之,加快搜索速度

常见索引分类:普通索引,唯一索引,主键索引,全文索引,组合索引

今天主要探讨普通索引,唯一索引和主键索引,不涉及全文索引和组合索引

二、知识剖析

普通索引:最基本的索引,相对于唯一索引和主键索引无特殊限制

主键索引:是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值,将整个数据表变成聚集索引

主键索引:是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值,将整个数据表变成聚集索引

唯一索引与主键索引不一样的地方:

①本质:主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。

②包含关系:主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。

③空值:唯一性索引列允许空值,而主键列不允许为空值。

④默认创建:主键列在创建时,已经默认为空值 + 唯一索引了。

⑤主键唯一性:一个表最多只能创建一个主键,但可以创建多个唯一索引。

⑥引用外键:主键可以被其他表引用为外键,而唯一索引不能。

索引原理:

几乎所有索引都是单独建立目录,里面按顺序(B-Tree)存储着字段所有值和对应的主键,然后在索引中找到查询的字段后,依靠此主键去聚集索引中查询该条信息

三、常见问题

既然索引这么牛,那我是不是应该每个字段都加一个呢?

答案当然是否定的

建立一个索引,就会将该字段的值取出来排序重新建立一个目录,每一个字段建立的目录都不一样,互不影响,所以,每新建一个索引:

1.增删改的速度就会慢上一分,因为得去修改相应目录

2.表格体积就会更臃肿,因为目录也是要占用空间的

四、解决方案

这些情况下不适合用索引:

1.字符长度过长不适合建

2.字段较少不适合建

3.数据较少不适合建

4.查询较少不适合建

5.更新频繁不适合建

6.唯一性差的字段不适合建

五、编码实战

针对师兄几个问题,测试如下

首先往名字设置唯一索引的表格添加十条数据

再添加一次,数据相同,大家知道,肯定是插入失败


此时,数据库里还是只有十条数据的,我再随便加入一条确定好可以发现


从上图可以看到,id 11被跳过了,所以应该是先增加再删除

六、扩展思考

使用索引需要注意的点

1.尽量先装载数据再建立索引

2.like模糊查询时,带索引字段关键词不要使用左模糊查询和全模糊查询

3.一个表的索引尽量不要超过三个,严禁超过五个

4.在varchar等字段类型上建立索引时,须指定索引长度,可以提高速度节约空间减少IO操作

5.索引不会包含有null值的列

6.有where子句的情况下order by子句索引会失效,建议建立复合索引

7.不要在查询列上进行运算,也会导致索引失效

使用误区

1.宁缺毋滥,认为一个查询就需要建一个索引。

2.宁滥勿缺,认为索引会消耗空间、严重拖慢更新和新增速度。

3.抵制唯一索引,认为业务的惟一性一律需要在应用层通过“先查后插”方式解决。

七、参考文献

阿里开发手册

https://zhuanlan.zhihu.com/p/23624390

https://www.cnblogs.com/luyucheng/p/6289714.html

八、更多讨论

1.

应用层即在java中使用判断语句来判断数据是否重复,如果重复,则会跳出警告并且不会添加此条信息,而唯一索引抛出异常是数据库本身的操作,所以当高并发的情况下,如果提交数据存在延迟,使用第一种情况就有可能造成数据的重复从而造成业务错误,而在数据库中使用唯一索引判断则不会出现此情况,感谢师兄的补充,对于高并发的确是我知识点的空缺


2.

关于此问题,就要涉及到索引的原理了,因为唯一索引是先从索引目录中找指定字段,找到后根据指定字段的主键去聚集索引里找寻,所以比直接利用主键索引多了一个步骤,因此,使用主键索引查找一定是更快的。

3.

在唯一索引中,只要设置允许null值,那么无论多少个Null,其值都是不重复的,因为java中规定null不为任何值。但是如果某一列存在null,那么这一列的索引在查找时也就失效了,所以一般设置索引的列都不准输入值为空。

以上是本次小课堂的主要内容

本次小课堂PPT

本次小课堂视频

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

技能树.IT修真院

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起修仙吧~

直接点击此链接:http://www.jnshu.com/login/1/22137050

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容