发表于: 2018-03-12 12:37:04
0 564
今天完成的事情:
1. 分别通过GUI和sql语句CURD数据
2. 尝试导出sql文件,并还原数据
3. 比较了10条数据下建不建索引的查询效率,基本没有差距,都为0.4ms左右
4. Mysql深度思考:
问:为什么DB的设计中要使用Long来替换掉Date类型?
答:我使用的是timestamp,用timestamp更方便做时间的转换或加减
问:自增ID有什么坏处?什么样的场景下不使用自增ID?
答:手动插入指定id比较困难、新老数据更替时会遇到重复问题,不便于系统迁移、分布式数据库高并发情况下容易遇到重复问题
问:什么是DB的索引,多大的数据量下建索引会有性能的差别,什么样的情况下该对字段建索引?
答:数据库的索引就像书的目录一样,能加快数据库的查询。数据量上万后建索引会有性能差别。表的主键、外键,与其他表连接的字段,经常用于搜索的字段应该建索引。
问:唯一索引和普通索引的区别是什么,什么时候需要建唯一索引。
答:唯一索引不允许有索引值相同的行,当该字段用于唯一标识时,如用户id。
问:如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了?
答:不需要,做了唯一索引的字段插入重复数据时,mysql会报错。
问:CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口?
答:两个时间点应该都由数据库来处理,默认值为CURRENT_TIMESTAMP,UpdateAt设置extra为on update CURRENT_TIMESTAMP。特殊情况才需赋值。不应该开放外部调用接口。
问:修真类型应该是直接存储Varchar,还是应该存储int?
答:储存int,新建一个课程表,报名帖内储存课程id,这样方便改课程名。
问:varchar类型的长度怎么确定?有什么样的原则,和Text和LongText的区别是什么?
答:根据需求确定,在考虑未来需求的情况下尽量短。Text最大长度为65535(2^16-1),LongText最大长度为4294967295(2^32-1)
问:怎么进行分页数据的查询,如何判断是否有下一页?
答:程序给出offset和limit,分别代表起始位置和查询量,mysql中使用LIMIT进行查询,查出来的数据量小于limit的大小时没有下一页。
问:为什么不可以用Select * from table?
答:会将数据的所有列都查出来,影响效率,并且大多数情况下应该知道自己需要什么数据,要什么查什么。
明天计划的事:
1. 学习maven
遇到的问题:
1. sql语句不熟
收获:
1. 深度思考里有很多关键的知识点,每个任务都应该过一遍
评论