发表于: 2025-02-23 19:38:14

0 36


步骤十一:查看深度思考中Mysql相关的一些问题,将自己思考的结果写在日报中,并查阅之前师兄的日报,看看是否有合自己思路接近或者是完全不一致的地方

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

```````````````````````````````````````````````````````````````````````````````````````````

在MySQL中long类型即是bigint类型,bigint类型的取值范围为表示从-2^63到2^63-1,占用了八个字节的空间。

date类型在MySQL中表示为时间类型,当然还有datetime、timestamp、

date仅表示日期、而不能显示时间。

datetime表示日期加时间在数据表中做修改时,datetime不会做出改变。

timestamp同样表示日期加时间,但是在数据表中做出修改时,timestamp会根据修改的时间做出改变。

通过查询百度和师兄的日报发现:

1、data类型有固定的格式,各地区的时间存储类型不一致,中国有春夏秋冬之分,而外国没有中国这种季节之分,做转化较为麻烦。

2、bigint也可以清楚的表示时间。

3、bigint类型在java与数据库之间不用做转化,省时省力。

````````````````````````````````````````````````````````````````````````````````````````````

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

ID自增的坏处:1、id通常做为主键,在新数据表和旧数据表相互合并时,会出现问题。

2、ID不自增会使表格顺序混乱,我在使用navicat创建数据表时没有标注主键和id自增,填入数据后刷新会发现先插入的数据在后插入的数据后面,而自增后表格将会按照顺序显示数据。

3、很难处理分布式存储的数据表,尤其是需要合并表的情况下不使用自增id。

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

  • 1、索引是对数据库表中一个或多个列的值进行排序的结构。

  • 2、加快检索表中数据,亦即能协助信息搜索者尽快的找到符合限制条件的记录ID的辅助数据结构。

    通过deep seek得知

  • `````````````````````````````````````

  • 小数据量(< 10,000 行):索引对性能提升有限,甚至可能增加维护开销。

    • 中等数据量(10,000 - 1,000,000 行):索引能显著提升查询速度,维护成本在可接受范围内。

    • 大数据量(> 1,000,000 行):索引对查询性能的提升非常明显,但维护成本(如插入、更新、删除)也会显著增加。

    ````````````````````````````````````````

  • 索引分为`唯一索引`和`普通索引`

在我的理解中,应该在数据具有唯一性时添加索引,或者在需要经常查询到的数据添加索引,

索引的作用只是在扫描中可以快速定位出想要查找的数据。

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

1、唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。(例如学号等唯一且不会重复的值)

2、普通索引是可以大量添加的,但是加索引是会占用磁盘空间,索引加的越多,对表的修改就会更加麻烦。

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

不需要判断

唯一索引的作用:数据库会自动确保该列的值唯一,插入重复值时操作会失败。

当插入相同数据时,数据库会报错。

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

create_at 会在数据首次插入时赋值,通常由数据库或应用程序自动设置为当前时间.

update_at在数据每次更新时赋值,通常由数据库或应用程序自动更新为当前时间.

调用接口时应该由后端来进行修改,不建议开放给前端或外部来调用接口。

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

在我的理解中,修真类型中含有中文和英文等,而int是整数类型,无法存储汉字。

使用修真类型应该使用varchar类型。

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

varchar  text  longtext 都是用来存储字符串类型的,但各种的使用场景不一样;

  • 如果数据长度较短且需要索引,使用 VARCHAR

  • 如果数据长度较长且不需要索引,使用 TEXT

  • 如果数据非常大(如超过 64KB),使用 LONGTEXT 

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

````````````````````````````````````````````````````````````````````

在看了参考文章后,对分页有了一个简单的理解。

不管数据量的大小,都要进行分页,分页是为了在查找数据时能够节约搜索的时间,同时在数据量大时,分页也能更快和更准确的查找到相应的数据。

分页就是将数据以多页展示出来,使用分页的目的是为了提高用户的体验,节约服务器的性能。

使用SELECT查询时,如果结果集数据量很大,比如几万行数据,放在一个页面显示的话数据量太大,所以需要分页显示。

`````````````````````````````````````````````````````````````````````````

获取总的记录数,拿记录总数除以每页的记录数,只要能取余,就有下一页

例如有21条数据,每页10条,相除等于2余1,就能判断出可以分成完整的2页和只有1条数据的第3页。

今天完成的事情:完成了步骤十一。

收获:让我更加深层次的认识到了学习的不易,学海无涯!通过步骤十一让我能更加静下心来对知识有一定的了解。


明天完成的事情:继续完成步骤十一以下的任务点。




返回列表 返回列表
评论

    分享到