干货必读提升性能:七、数据设计中哪些会真正影响性能
本帖最后由 Grayson.Shang 于 2022-11-1 10:49 编辑这是我在网上找到的一个帖子,内容讲的数据库设计的重要性
当然这个比较官方,我总结了几点我的观点(仅个人观点,若有问题,请大佬指出)
1. 数据库设计的好,数据的增删改,使用起来就会很顺畅,比方说
---
我若是在学籍关系系统的时候,若是把《学员》、《教学楼》、《课程安排》分开的话,我无论是增加一栋教学楼,还是增加一门选课,或者某一个学员毕业,都可以做到各自改各自的,不会影响其他相关的,也不会收到其他影响
---
相反,若是把这三个写在同一张表的话,是不是我增加一个学员,我首先要填学员信息,若是没有课的话,是不是教学楼信息不用填,课程安排是不是这时也就不用填了,而若是一个学员有多门选课的话,是不是这个学员的信息也同样会被填多次。当然这种情况忍一忍还是可以接受的, 有的我填就行,没有的我就不填。
---
再举一个例子,比方说,学员在9月1号选择了“数据结构”的课程,参与选课人员总共200人,到9月10号的时候突然通知,老师身体不舒服,课程取消,那么是不是需要把和这个课有关的所有数据都要删除,或者作废,工作了是不是一下就打起来了。
2. 数据库设计的不好,数据库的查询会出现极大的性能问题
今天主要的内容就是说一说,哪些不好的设计会导致查询的性能问题,而查询的性能差了,相对应的修改和删除性能也存在相同的性能问题。
-------------------------------------------------
因为关于数据库设计模块,和活字格关系并不紧密,我就不在活字格中测试性能了,在网上找了一些相关的数据,以供大家参考。
static/image/hrline/1.gif
1. 查询语句中Count(*)的使用(小)
聊聊MySQL的COUNT(*)的性能_god-jiang的博客-CSDN博客
在数据库中,使用COUNT(*)其实并不会对我们的查询语句,或者视图产生太大的影响,可以放心使用,
下面是我在SQLserver中,使用select count(*) from table,查询到的数据是近70W条,数据,时间是80ms,所以这种查询并不怎么影响
----
2. 关键字段没有创建索引(大)
这里指出的关键字段,其实就是我们在数据库查询中,经常回使用到的查询条件的字段,即尽量使用索引的字段作为查询条件,若是没有索引,就在数据库中创建对应的索引
创建索引前
创建索引后
记一次 SQL SERVER 数据库查询性能优化 千万级数据_ijwsoft的博客-CSDN博客
----
3. 视图没有设置主键(小)(活字格内置的功能)
这个是将外联库中的视图导入到活字格中的时候,会提示用户,需要给视图设置主键,而在真正的数据库中,视图是不能设置主键的。
这里的主键,其实是活字格内部应用的,因为导入的是外联视图,在进行查询的时候,需要有唯一键来确认不同的数据行,不会具体写到数据库中,而是活字格内部会根据大家的设置,来进行查询,而且活字格不会特意去维护这里的主键,需要用户本身来维护。
应该小伙伴,在使用ODATA或者其他的查询条件查询视图信息时报错了吧,最后发现是因为没设置主键
----
4、一般连接多张数据表,要使得数据库查询语句性能好点遵循以下原则(影响不定):在做表与表的连接查询时,大表在前,小表在不使用表别名,通过字段前缀区分不同表中的字段查询条件中的限制条件要写在表连接条件前
----5、干货必读,SQL优化常用的几种方式,这一点就不在各位大佬面前献丑了,找了相关帖子,以供大家参考SQL优化常用的几种方法_wangzheweini的博客-CSDN博客_不属于sql优化常用的方法是
页:
[1]