发表于: 2017-11-22 22:05:42

1 662


今天完成的事情:


今天看完了禅道的讲解


然后复习深度思考

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

1) DB的索引是对数据库中列值进行排序的一种结构,使用优化的排序算法,能提高查询速度

2) 对于数据量所引起的性能差异,我做了如下测试:

首先,先建立两个数据量一样的表,一个为applicant,另一个为test

applicant有存在于字段name上的idx_name索引,而test仅有数据

关于如何快速增加表数据的方式,我采用了插入表语句:

接下来开始进行测试:

首先测试当数据量达1k+时:

有索引的表:

 

无索引的表:

数据量达1w+时:

有索引的表:

无索引的表:

数据量达10w+时:

有索引的表:

无索引的表:

综上,添加索引表在数据量达到10w+时查询速度明显优于无索引的表

结论:在数据量达10w+时可带来性能上的提升

3) 建立索引的字段应当满足:

需要频繁作为查询条件,唯一性强,不需要频繁更新等

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

              1)唯一索引要求其索引值必须唯一,不能重复。

              2)如果确定某一列值不重复,在为其创建索引时就需要唯一索引

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

              不需要。创建唯一索引后,插入新数据时,系统会自动检查是否存在该字段值,若已存在,mysql会拒绝本次插入。

因此创建唯一索引的目的往往是为了确保数据的唯一性。

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

1) 在插入数据时需要给两个时间都赋值,在更新数据时只需要给update_at赋值

2) 个人认为不需要。这是给数据库管理员查看,提供接口降低了安全性。至于两个字段的赋值问题,可以给两个字段添加时间戳(触发器),由系统自行添加

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

修真类型样例:JAVA工程师

明显属于字符串,故选择varchar类型

注:varchar存储字符串类型,int存储整数类型

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

1) Mysql5.0以上版本,Varchar最大存储字节时65535,而确定varchar类型时varchar(length)中的length代表不是字节数,而是个数。例如:已知utf-8汉字占3个字节,对于varchar(20),不论是存储英文,或者汉字,都最多存储20个,只是在容量上大小不一致(存英文:20*1字节;存汉字:20*3字节)

因此,varchar长度的确定取决于所要存储的字符串最大“个数”

2) 存储大小:Varchar最大65535字节;Text最大65535字节;Longtext最大4294967295字节

插入超过指定大小的数据时:Varchar无法插入,TextLongtext截取符合大小的部分数据进行存储。

检索效率:varchar>text>longtext

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

1)     使用关键字limit

Select * from table_name limit 第几条数据-1, 当前页数据数

注:第几条数据-1 = (页码-1)*当前页数据数

例如:此时第二页的sql查询语句即为

Select * from applicant limit (2-1)*5, 5;

              2)查询前通过count(*)查询数据总条数

                     通过 第几条数据-1+当前页数据数 > 总数据数 可判断有下一页

                     

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

              这个问题百度了后感觉有些复杂,我重新组织一下。

              Select * 对比select 1,[2, …],效率上没有太大差别,只是在程序设计时对于非编写者阅读性差;对于程序今后的拓展性方面,程序所需的列时确定的,但若数据库新增一个字段,又会造成不必要的查询;对于覆盖索引,select *在读完索引后还会去读数据,造成性能上的差别


明天的计划:复习深度思考  晚上复盘评审


遇到的问题:发现很多基础并没有学好


收获:基础


返回列表 返回列表
评论

    分享到