发表于: 2017-12-15 19:17:38

1 670


今天完成的事情

任务九

.给姓名建立索引

Create index name_index on student(name(5));一般姓名不超过5个字符,所以限制索引字段长度是5基本就可以了。

 还应该给学号建立索引,但是学号设置为主键,已经默认建立了索引了,所以就不用再手动添加了。使用 show indexes from student; 结果是这样的

任务十

仅仅对id保留主键(即主键索引)的情况下,插入十条数据,时间是0.028s

然后对name建立索引,当然id依然保留主键和主键索引,再次插入数据,时间是0.034s,看来添加索引后,插入数据因为同时要把插入的数据条目编入索引,所以耗时有所增加。

任务十一

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

一方面使用除了timestamp类型之外的其他时间类型,无法跨时区,而是用long使用的是unix纪元,跨时区没问题。另一方面使用long类型更加灵活,可以根据需求更加灵活地转换成日期表示格式。

自增ID有什么坏处?什么样的场景下不使用自增ID

网络查询一番,说涉及到将来数据库更新,新老系统集成时可能出问题,但这不是我目前能理解到的。以及设置为自增的话,该字段就成为数字类型了,或许会涉及到把编码设置为数字类型而不是字符串带来的问题,这个也是我目前的水平无法做出判断的。

  什么是DB的索引,多大的数据量下建索引会有性能的差别,什么样的情况下该对字段建索引?

索引就类似给数据添加目录,便于更快定位数据。体现出索引对性能的影响,应该在后续任务28有测试吧,到时候再说。

对于经常作为查询条件的字段应该建立索引。

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

唯一索引和唯一键是一体的。添加唯一索引也就有了唯一键的约束,不允许有重复的键值。当某字段需要保证唯一,以及经常作为查询条件时需要建立唯一索引。

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

不用,建立唯一索引的时候同时也即添加了唯一键约束。所以如果插入重复的qq号,mysql会提示的。

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

CreateAt是插入该数据的时候赋值,UpdateAt是在后续更新该条数据的时候赋值,如果没有值就说明没有更新过。前者不需要开放,后者应该开放。

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

Varchar吧,存储字符。考虑到其他问题的质量都很高,这个问题答案真的就这么显而易见吗?看了其他同学的回答,是不是该为修真类型建立一个单独的表然后设置编号id,然后在student表中只需要添加编号即可,再添加一个外键约束到修真类型表即可。

 varchar类型的长度怎么确定?有什么样的原则,和TextLongText的区别是什么?

占用字节数是字符数量X每个字符占用字节.然后再加上字符串的结束标识符(占用了一个字节,如果列声明的长度超过255,则使用两个字节).搜索了一下,长度根据需求来确定吧.定义合理的长度可以过滤一部分非法数据.以及定义合理的长度更容易让人理解该字段的用途.

Varchar和后两者的区别就是表示范围不同.以及varchar可以规定长度,而对TextLongText即使规定长度也无效.

 怎么进行分页数据的查询,如何判断是否有下一页?

分页查询使用limit.关于如何判断是否有下一页有点看不懂.没有应用场景get不到考点.

为什么不可以用Select * from table?

把不需要的字段也检索出来,增加查询负担吧. 

任务十二

JreJava的运行环境.jdk 包括jre以及编写Java程序的开发工具. 

明天计划的事情

学习maven

遇到的问题

上面的一系列问题中的答案肯定有不合理的地方。要多看看其他同学的答案,以及以后更加深入学习后可能会有新的想法

其实今天下午就开始安装maven,但是手上4.2版本的Eclipse死活无法安装maven插件。捯饬了2小时也没弄好。实在不行明天换idea吧。

收获

数据库方面太多知识点在做网络查阅的时候,虽然能看懂,但在实际开发中的意义是我目前无法理解的,只能靠以后多接触项目,在实战中体会了。


返回列表 返回列表
评论

    分享到