发表于: 2017-09-08 23:02:21

2 792


今天完成的事:

1.使用navicat将表导出本地后删除并导入恢复数据

学会了导出和导入数据,下面会给出过程

导出数据和导入数据目的无需多言(why),下面会讲如何做(How)

导出:

选中要导出的表并右键选择"Dump sql file",选择"structure and data",随后选定导出路径即可。

导入:

选中表所在的数据库并右键点击"Execute sql file"后选中需要导入的文件,并点击"start"即可。

导入成功后刷新对应表即可

2.给姓名建立索引并深度思考

学会了为什么添加索引,如何确定是否该为某个字段添加索引。

首先,若是不添加索引,查询id=2,会来次全表扫描若是数据量小可能感觉不到,若是数据量稍微大了,那么会有明显的差异。若是添加了索引,会直接使用索引,索引有两种一个是hash结构的,一个是B—Tree结构的。此两者都是为了快速检索定位数据,差异和用途可见此文http://blog.sina.com.cn/s/blog_6776884e0100pko1.html

其次,该如何确定是否该为某个字段添加索引呢

索引是为了能够快速检索定位数据,那么可以这样去思考,谁会使用这个表(目标群体是谁),目标群体是否需要对某个字段进行频繁的访问,或者对某个字段中数据的操作的时间复杂度影响到用户体验,如果答案是肯定的那么不要疑虑,可以为该字段加索引了。

可能会有人问,是的,我也有这个疑问,能不能给表中所有字段都加索引呢?能否去做这件事,首先你得明白成本和收益的比例,若是成本小于收益那么的确可以这么做。很可惜,若是为所有表中的字段加索引这个成本是很高的,以至于收益小于成本。添加索引需要占用空间,若是为所有字段都加索引,数据量小可能无所谓,数据量一大这个索引的占用空间比例也是很高的,其次就是每次更改删除表中数据都要更新索引表,更改删除也是需要时间成本的。因此这个做法是不提倡的

深度思考之还能给哪个字段添加索引?

首先,报名帖的学生数据谁会需要对这个表进行操作呢(目标群体是谁),思考后发现就是老师了。老师需要对学生的哪些数据频繁的进行操作呢,我想应该是查询学生的联系方式QQ。既然已经给姓名字段加了索引,那么使用该字段去查询学生联系方式已经足够了。不需要为其他字段添加索引。

深度思考之为什么DB的设计中要使用Long来替换掉Date类型?

可查看该链接中视频https://v.qq.com/x/page/g0533h1785c.html。简而言之就三个原因:

1.Data类型有固定的格式,不太方便表示世界各个地区的时间。(国外有夏令时和冬令时之分)

2.使用long也能清晰的表明具体时间

3.若是将时间改为三年后,若是使用Date需要重新去编写出符合格式的时间。而是用Long只需要在原有时间上加上特定的值即可。

唯一索引和普通索引的区别是什么,什么时候需要建唯一索引?

普通随意不检查数据的唯一性,怎么将呢,你插入表中一行数据,该行数据需要更新到索引表,如果索引表中的字段值与其他值重复了,普通索引不会做出处理。

唯一索引恰恰相反,插入表中一行数据,随后会更新索引表。若是插入的索引字段值与其他值重复了,数据库不会插入这条数据,结果就是索引表不会更新这边数据,表不会插入这行数据。

需要索引字段中的值具有唯一性需要设置为唯一索引,主键就是一种唯一索引。

如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了?

这要视判断是否添加判断后处理的时间低还是说不判断在更新索引表中处理的时间低。若是不判断更新索引表时去自动判断耗时低那么不应该加,若是反之则应该加。因为我没对这些细节进行太多研究,因此我不知道,我知道什么情况下该判断什么情况下不该判断。

CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口?

在插入该行数据时赋值给createAt和UpdateAt,在更新这行数据时,则更新UpdateAt.应该开放调用接口,但需要做权限限制,只开放select权限。

修真类型应该是直接存储Varchar,还是应该存储int?

若是采用int是否需要将该int的值转码为string类型向某些用户展示(因为内部人员可能理解int数字表明的类型,用户无法理解。若是对客户给出int对应的类型,类型太多是否会影响用户体验)。若是需要展示,那么用转码的耗时成本使用int来降低空间占用率是否是明智的。我不知道相关测试数据,因此我无法给出一个特定答案。

就我而言,目前修真类型仅为4种,因此采用int是明智的,即使需要转码也不需要做太多的判断,耗时会非常低。也可以不用转换,直接在官方贴出说明,而直接将int值显示给用户。

3.在有索引和无索引情况下分别插入10条数据查看耗时情况

有索引:

无索引:

明天计划的事情:

完成任务12-15

遇到的问题:

1.导出数据姿态不对,导致导入数据时导入成功表中数据却没有更新。

导出数据时因为没有好好查资料,直接按自己的直觉点击了"Export Wizard"并以sql格式导出。导入的时候点击"import Wizard"发现不支持sql格式。

随后在群里求助师兄,在师兄的帮助下很快就定位问题解决掉了。在此感谢!!!

收获:

通过深入思考对于索引的认知更深刻了,

通过导出和导入数据学会了如何备份数据库数据。



返回列表 返回列表
评论

    分享到