找回密码
 立即注册

QQ登录

只需一步,快速开始

Grayson.Shang 活字格认证 Wyn认证
超级版主   /  发表于:2022-11-1 10:47  /   查看:2031  /  回复:0
本帖最后由 Grayson.Shang 于 2022-11-1 10:49 编辑

这是我在网上找到的一个帖子,内容讲的数据库设计的重要性
image.png262213134.png

当然这个比较官方,我总结了几点我的观点(仅个人观点,若有问题,请大佬指出)
虚心接受批评.png483821105.png

1. 数据库设计的好,数据的增删改,使用起来就会很顺畅,比方说
---
我若是在学籍关系系统的时候,若是把《学员》、《教学楼》、《课程安排》分开的话,我无论是增加一栋教学楼,还是增加一门选课,或者某一个学员毕业,都可以做到各自改各自的,不会影响其他相关的,也不会收到其他影响
---
相反,若是把这三个写在同一张表的话,是不是我增加一个学员,我首先要填学员信息,若是没有课的话,是不是教学楼信息不用填,课程安排是不是这时也就不用填了,而若是一个学员有多门选课的话,是不是这个学员的信息也同样会被填多次。当然这种情况忍一忍还是可以接受的, 有的我填就行,没有的我就不填。
---
再举一个例子,比方说,学员在9月1号选择了“数据结构”的课程,参与选课人员总共200人,到9月10号的时候突然通知,老师身体不舒服,课程取消,那么是不是需要把和这个课有关的所有数据都要删除,或者作废,工作了是不是一下就打起来了。
分手.png773225707.png

2. 数据库设计的不好,数据库的查询会出现极大的性能问题
今天主要的内容就是说一说,哪些不好的设计会导致查询的性能问题,而查询的性能差了,相对应的修改和删除性能也存在相同的性能问题。
-------------------------------------------------

因为关于数据库设计模块,和活字格关系并不紧密,我就不在活字格中测试性能了,在网上找了一些相关的数据,以供大家参考。



1. 查询语句中Count(*)的使用(
聊聊MySQL的COUNT(*)的性能_god-jiang的博客-CSDN博客
在数据库中,使用COUNT(*)其实并不会对我们的查询语句,或者视图产生太大的影响,可以放心使用,
下面是我在SQLserver中,使用select count(*) from table,查询到的数据是近70W条,数据,时间是80ms,所以这种查询并不怎么影响
image.png246986083.png
image.png243843993.png

----
2. 关键字段没有创建索引(
这里指出的关键字段,其实就是我们在数据库查询中,经常回使用到的查询条件的字段,即尽量使用索引的字段作为查询条件,若是没有索引,就在数据库中创建对应的索引
创建索引前
image.png849089050.png
创建索引后
image.png825402526.png
记一次 SQL SERVER 数据库查询性能优化 千万级数据_ijwsoft的博客-CSDN博客

----
3. 视图没有设置主键()(活字格内置的功能)
这个是将外联库中的视图导入到活字格中的时候,会提示用户,需要给视图设置主键,而在真正的数据库中,视图是不能设置主键的。
这里的主键,其实是活字格内部应用的,因为导入的是外联视图,在进行查询的时候,需要有唯一键来确认不同的数据行,不会具体写到数据库中,而是活字格内部会根据大家的设置,来进行查询,而且活字格不会特意去维护这里的主键,需要用户本身来维护。
应该小伙伴,在使用ODATA或者其他的查询条件查询视图信息时报错了吧,最后发现是因为没设置主键

----
4、一般连接多张数据表,要使得数据库查询语句性能好点遵循以下原则(影响不定):
在做表与表的连接查询时,大表在前,小表在
不使用表别名,通过字段前缀区分不同表中的字段
查询条件中的限制条件要写在表连接条件前

----
5、干货必读,SQL优化常用的几种方式,这一点就不在各位大佬面前献丑了,找了相关帖子,以供大家参考




0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部