@
qiumaoyuan 规范的最终目的是服务于团队的,也就意味着想要提升整个团队的工作效率,就像代码是给人看的而不是给机器看的。进一步落地的方案可能是统一命名风格、禁用某些特性。时代在进步,同样我们使用的数据库或者其他中间件也在不断的改进和优化,但是很多方案却止步不前。开放学习和进步的团队文化是至关重要的,在我看来,现在很多的规范都已经过时了,也许在那个时候确实是有理由这样做,但是发展到现在就有点像用明朝的剑斩清朝的官。
反映出来的现象就是,由于很多人学习了这些早期项目的编码实践,后来又被其他人给继承,我不知道他们有没有仔细想过这些细节,但是科学的方法是进一步测试,得出实实在在的证据表明这些实践是否仍然有效。试图发现和总结出现这些现象的原因是另一个问题。
回到主题,对于楼主这个问题,我认为不在于 IN 本身是否好坏,而在于你的业务场景是否适合使用 IN,在 OLTP 场景,响应时间是至关重要的,同时也要保证数据的一致性和完整性,解决思路就是在时间和空间之间取得一个平衡。
对于下单来说,大多数系统需要保证操作及时响应,这也就意味着你不能进行太多耗时的操作(大部分时间花在了 IO 上),但是对于查询来讲,实时性也许就不那么强,或许可以通过异步的方式产生派生数据(即根据订单数据生成另一份数据),这一部分数据可以专门优化为方便查询的结构。当然是否采取这种方法取决于楼主业务的实际使用场景以及我方才这些假设是否成立。