3

我必须根据以下实现做一些逻辑。

我有一个高达 36 位的大数字,例如 913695089923267549815145223638290430(由不同的应用程序随机生成)。我需要将它除以长度更小的任何数字,比如 70368844197664;(由不同的应用程序随机生成)假设我得到的商为 19956694.3256

对于我的代码,只有小数点前商的最后一位(即 4)很重要。目的是检查商是偶数还是奇数,如果可能的话,最后一位的值也是如此。

我不能使用简单的数据库函数,比如模数或除法,因为它非常耗时。有没有更快更有效的方法?任何建议将不胜感激。

太感谢了。

问候尼拉吉

4

1 回答 1

5

您想要做的几乎就是“模算术”的定义。如果您的数据库中的内置算法不能足够快地进行计算,我不确定您可以做些什么来改善这一点,除非您编写自己的数据库引擎或购买功能更强大的硬件。

问题真的是算术的速度,还是记录检索或索引?我的意思是,如果你说的是这样的话:

select ... whatever ... from table1 join table2 using (someid)
where (table1.q / table2.d) % 10 = 4

并且您在函数 (table1.q / table2.d ) % 10 上没有索引,这将需要数据库读取每条记录,执行计算,然后挑选出那些给出正确答案的记录。您的问题可能不是算术,而是索引。

于 2011-05-16T16:44:11.043 回答