有意思的查询20211230
2021-12-30 本文已影响0人
终身成长日记
昨天我将思考了两天的表设计方案(数据库设计)拿出来,给同事们去讨论可行性。
讨论几轮发现没有什么大问题,在最后一轮的讨论中,技术大佬提出了一个问题,就是我的表设计会存在一个很难优化的点,一旦使用这个方案,想优化都没办法。
那是什么问题呢?
他举了一个例子,我们想要知道一个月支出了多少钱,有两种方案,一种是用一张表去存,这张表记录的是这个月的支出流水,如果我想要知道支出了多少钱,我就必须将这个月所有支出流水全部累加起来得到一个支出的金额;另一种是,使用两张表,一张表在记录流水的过程中,在另一张表去存每个月一条记录累加当前流水的金额,等到月末的时候,只要去查后面这张表,就能直接得到支出了多少。
这两个方案哪个更好呢?
当然是第二个,你可能会觉得是因为第二种方案,不用去累计节省了时间,提高了效率。
其实这并不是主要原因,真正的原因是,随着使用这个功能的时间越来越久,记录流水表的数据增长量远大于记录只记录每个月支出表数据增长量,就好比你从几亿的数据中查出几百条数据求和简单,还是从几百条查一条简单,答案不言而喻。
简单理解就是随着业务功能正常使用,时间增加查询速度减小这是一定的,因为数据量增加这是必然的结果,但是不能接受随着时间推移查询速度陡降。
而我的方案会存在着这个问题,这也是我的方案被毙掉的原因。
但奇怪的是,我并不难过,我反而觉得这个查询真有意思,想要去仔细研究研究。
说句题外话,最后的表设计方案,还是保持着我第一版的设计,而昨天的设计方案是第二版的,被否决了。也就是说两天白忙活了,感觉像是认证了第一版的方案是对的。