发表于: 2017-12-07 22:33:10

3 791


一、 今天完成的事情:

复习了task1-4 task1-5 task1-6,完成了task1-7task1-8task1-9task1-10

 

昨天忘记打“宣言”字段,今天重新设计了表

 

 

 

 

 

 

 

 

 

 

 

navicat把宣言改成“老大最帅”

 

 

 

 

 

 

 

 

 

 

 

mysql将宣言改成“老大最帅啊”

 

 

 

 

 

 

 

将制作好的表导出sql文件并删除表中数据,之后完成恢复备份的数据

name列建立了索引,我认为经常需要查询的数据都需要建立索引,比如学号,修真类型。

 

 

插入了10条信息,并查看有索引和无索引的情况下sql执行状况

第一次完全一样,然后加大写入数据量

一次插入50条数据后发现细微差别

可以看出,在添加索引的情况下,插入数据的效率会下降。这是因为索引的弊端,每插入一条数据都要更新一次索引内容,导致插入数据效率下降

 

试着回答深度思考里面那些关于MySQL的问题:

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

使用Long类型可以方便的计算两个日期之间的时间差

 

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

不太明白,查了网上的资料,比较倾向于这个人的观点:

 

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

 

索引就像一本书的目录,其存在的唯一目的就是为了让我们对内容进行快速的查询,索引是从属于表,在数据字典中独立存放但不能独立存在。选择的数据量占总数据量的5%或者更大,就需要建立索引。在一个或者一些字段需要频繁用作查询条件,并且表数据较多的时候,对这些字段创建索引会明显提高查询速度。
    
4、唯一索引和普通索引的区别是什么,什么时候需要建唯一索引。
唯一索引是不允许其中任何两行具有相同索引值的索引,普通索引是最基本的索引类型,没有唯一性之类的限制。

 

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

 

不需要,若有重复数据,数据库会直接报bug,况且QQ不存在重复。

 

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

 

CreateAT在创建的时候赋值,UpdateAt在此后每次更新此条数据的时候赋值;

       可以使用数据库的触发器直接赋值,不需要开放给外部调用接口

 

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

修真类型数量有限,可以用int数据直接代替,已节约数据库的空间,调用时再使用接口还原

 

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

        采用按需定义原则,例如QQ号最大长度为11,则长度是“11+1”

  

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

     Select是操作数据库里的对象的数据操作语言,如果可以用,那将显示所有数据库中的表,这样会导致处理负荷高,影响执行效率。

 

二、 明日计划:

  继续task11之后的步骤,不紧不慢,稳扎稳打。

 

 

 

 

三、 遇到的问题:

1、 在查看有无索引的情况下sql执行效率的时候试了几次才完成。

2、 深度思考的问题很有意义,很遗憾今天才看到,有几个问题还是答不上来,甚至资料也查不到一个靠谱的,师兄们的答案也是五花八门的,之后几天都回头思考一下,自己也要回答出这些问题。

3、 还是基础问题,需要时刻提醒自己多敲代码,打字飞快的人,来这两天敲代码全都是兰花指在戳。

 

四、 收获:

   对sql语句的基本操作都有了一定的记忆与理解,很多有意思的问题值得深思,每天都在补基础,一点一点慢慢来吧!



返回列表 返回列表
评论

    分享到