作者:凡秘能 | 来源:互联网 | 2023-05-19 18:14
1、在数据库中专门设立一个数据表对系统中的主键最大值进行记载,客户端要计算时就从这个表中的某个指定字段中取出并对其进行计算(如:+1),然后将其字段值改为当前最大值。2、临时从数据表中查询出最大值
1、在数据库中专门设立一个数据表对系统中的主键最大值进行记载,客户端要计算时就从这个表中的某个指定字段中取出并对其进行计算(如:+1),然后将其字段值改为当前最大值。
2、临时从数据表中查询出最大值来计算。
对于1就需要调用另一个com+对象,但减少了查询时间,而2则是在同一个com+对象内不同方法的调用,但增加了查询时。
大伙来讨论一下,哪一种方案更好一点?
10 个解决方案
对于1的疑问,有必要再建一个com+对象吗,在同一个对象中提供一个方法不可以吗?(如果客户端需要调用的话)
而且,一个有点规模的系统这方面类似的方法至少也有50个,如果把它分散到每个组件中,我觉得其独立性并不好。
第二办法比较好,第一办法并不会减少查询时间,而且还有维护一张表,麻烦
不用自增字段么?
1和2都是从数据库中读一次,有什么区别么?
部分编号用了自增字段,但是大部分没用,用了自定义的有意思的组合码。
但是在1中数据量非常小,花在查询上的时间非常小,而在2中随着时间的推移数据量会越来越大,花在查询上的时间会越来越大啊,仅我的观点,欢迎大家讨论。
我的观点也是这样。
第一种方法,可移植性高,性能较好。可以独立为一个事务,简短。
第二种方法,要求事务的隔离级别高,性能低劣,需要获得大量的锁,并且需要同插入操作
嵌于同一个事务。
如果只是简单的唯一索引,可以用第一个,但是如果是需要表示意义的字段,例如职员代码,需要能从职员代码看出该职员属于哪个部门的,就不是很好了。这个时候两位表示部门代码,后三位表示序号,看上去就比较明了。01002表示一科第二位。