数据库设计中冗余字段的两个小应用【转】
1. 时间显示冗余字段。
在表中如果有时间字段,比如存储记录业务时间,我们一般会把时间化为数字进行存储,主要的目的是为了方便比较,但是问题就在于在显示的时候面临一个转换的问题,必须要转成有格式有文字的样式。
初始时我的做法就是写个工具类然后遇到此类的情况就不停的来回转,返回查询结果数据之前完整的遍历一遍List,现在想想有点不应该,浪费了服务端的好多资源,后来又变成了在页面显示时利用extjs的render方法去转换,这样又延缓了页面呈现时间。
现在想明白了,完全可以在数据库里多加一个字段,存储的就是用于显示格式的时间,仅仅用于显示,那么如果这样做带来的影响也不是很大,插入的时候多处理一个字段,把数字转换成显示格式存进去,但是查询和显示的时候就带来了极大的方便。效率上几乎没有损耗。这个问题太容易遇到,非常推荐大家采用。
2. 用于乱序排序的随机数字段
大部分的数据库业务记录都是有顺序存储的,一般是时间或者id,但是有时候我们需要拿出一个乱序的集合,比如我们要处理一个报名考试的拍考场问题。
以往的做法是把整个表都拿出来,然后放入一个List1,然后从List1随机的去除元素然后依次放入List2,再将List2返回,效率低自然是不必说了。
后来的解决方案变成在表中多加入一个随机数字段,插入数据的时候顺手把生成的随机数插入进去,查询的时候直接order by这随机数字段,出来的结果就已经是乱序的,而且又不影响其他业务的正常查询,效率高了不止一点两点。