发表于: 2020-07-18 13:42:36

1 1126


今天完成的事情

 1. java任务1第七点:分别用Navciat和Sql语句去将本条数据记录的报名宣言改成老大最帅


2.给姓名建索引,思考一下还应该给哪些数据建索引

索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构。其实我觉得索引就相当于是字典的音序表,想要查询某一个汉字的时候,只要查询音序表就可以了,建立索引可以大大提高检索的数据,以及减少表的检索行数,所以对于需要经常查询,经常更改的数据都可以建索引,另外建主键索引或者唯一索引可以使数据具有唯一性。


3.深度思考中Mysql相关的一些问题

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

1. 因为DATE有固定的格式,不同的地区有不同的时间表示方法,而且外国有夏令时与冬令时之分,非常麻烦

2. 其实使用BigInt也能较为清晰的表示时间

3. 大多数时候我们并不关心某一个时间点,而是发生一个动作后,需要的时间,BigInt非常方便做减法而不用转化

 

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

(1) 不具有连续性,表中auto_increment最大值被删除,将不会被重用。就是说会跳号(如果设定的auto_increment_increment是1,那么下一次插入的id值将会从被删除的最大值算起,也就是被删除的最大值+1)
(2)历史数据表的主键id会与数据表的id重复,两张自增id做主键的表合并时,id会有冲突,但如果各自的id还关联了其他表,这就很不好操作。
(3) 很难处理分布式存储的数据表,尤其是需要合并表的情况下
(4) 在系统集成或割接时,如果新旧系统主键不同是数字型就会导致修改主键数据类型,这也会导致其它有外键关联的表的修改,后果同样很严重;

自增ID的替代者UUID自增ID的替代者UUID
UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。
UUID的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。


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

索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构

例如这样一个查询:select * from student where id=10000。如果没有索引,必须遍历整个表,直到ID等于10000的这一行被找到为止;有了索引之后(必须是在ID这一列上建立的索引),即可在索引中查找。由于索引是经过某种算法优化过的,因而查找次数要少的多。可见,索引是用来定位

从数据搜索实现的角度来看,索引也是另外一类文件/记录,它包含着可以指示出相关数据记录的各种记录。其中,每一索引都有一个相对应的搜索码,字符段的任意一个子集都能够形成一个搜索码。这样,索引就相当于所有数据目录项的一个集合

数据库多大的数据量下建索引会有性能的差别?


数据库中的索引储存引擎面用于快速查询找到记录的一种数据结构,索引对性能的影响非常重要,特别是在表中数据量达到百万级别的

时候,有无索引,或造成的性能差别非常大,正确的索引会极大提高查询的效率,就好比如一本书的目录,没有目录的情况查找的比较慢

有的话,查询速度截然相反


什么样的情况下该对字段建索引?



1丶表的主键,外键必须有索引

2丶数据量超过300的表应该有索引

3丶经常与其它表进行连接的表,在连接字段上应该建议索引

4丶经常出现weher子句中的字段,特别是大表的字段,应该建立索引

5丶索引应该建立在选择性高的字段上

6丶表的主键,外键必须有索引




返回列表 返回列表
评论

    分享到