84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
大家看这个表,其实主科总分,副科总分,总分 都能通过 前面的的数据算出来,
我想问问,要是 不考虑存储空间的情况下,
是把 主科总分,副科总分,总分 在插入数据的时候,就算出来好,还是 用 VIEW 算好?
这个好的意思,是减少服务器负担,还是搜索速度快.
学习是最好的投资!
从第三范式的角度看,主科总分、副科总分、总分这三列属于依赖于其他列的数据,不应该作为单独的列放到数据库表中。
如果考虑数据读取的压力很大,不想在应用服务器或数据库端再做计算,那么可以按照冗余列的方式存储在表中。在上面所说的场景中,学生的成绩录入后修改的次数应该很少,因此冗余列的更新成本较低,属于典型的读多写少的情况,因此有冗余列总体上服务器的压力会比较低。
看你是插入数据多,还是读取结果多;插入数据时多时就把计算放在视图内,读取数据多时就把sql计算结果放在表里,但读取的压力远远低于插入吧,这个比例还是要权衡下,建议选择放在视图内。
从第三范式的角度看,主科总分、副科总分、总分这三列属于依赖于其他列的数据,不应该作为单独的列放到数据库表中。
如果考虑数据读取的压力很大,不想在应用服务器或数据库端再做计算,那么可以按照冗余列的方式存储在表中。在上面所说的场景中,学生的成绩录入后修改的次数应该很少,因此冗余列的更新成本较低,属于典型的读多写少的情况,因此有冗余列总体上服务器的压力会比较低。
看你是插入数据多,还是读取结果多;
插入数据时多时就把计算放在视图内,读取数据多时就把sql计算结果放在表里,但读取的压力远远低于插入吧,这个比例还是要权衡下,建议选择放在视图内。