【发布时间】:2019-09-13 21:55:54
【问题描述】:
这里的假设问题。我们有一个包含文档的数据库,所有文档都有一个名称。但是,我们的数据库不提供自然排序功能,只有字母可用 asc/desc。我们需要在使用自然排序的同时对数据进行分页。
是否有一种算法可以将字符串转换为自然排序字符串,然后可以用作排序列?有这样的事吗?或者有更好的方法吗?
记录数太多,所以我们无法全部提取并在代码中排序。所以尝试看看是否有一种方法可以在不完全迭代所有内容的情况下使其可排序。
【问题讨论】:
-
如果您的 DBMS 支持存储过程,您当然可以使用这些。正如我所见,MongoDb 仅支持“存储的 javascript”。请注意,Java 和 Javascript 之间没有任何关系。
-
Christopher 我还没有找到一种通过存储过程实现的有效方法,因为在我的情况下这是一个大数据问题。当它需要对 100k+ 行进行排序时,对每一行运行计算的性能影响是巨大的。
-
但是如果在 DBMS 中运行,性能还是会更好。对此没有任何争论。在程序中执行此操作将至少将数据通过网络的传输添加到整个过程中。它更有可能忽略诸如索引之类的东西以及适当的 DB(MS) 具有的所有其他简洁的加速。