发表于: 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页。
今天完成的事情:完成了步骤十一。
收获:让我更加深层次的认识到了学习的不易,学海无涯!通过步骤十一让我能更加静下心来对知识有一定的了解。
明天完成的事情:继续完成步骤十一以下的任务点。
评论