对数据进行排序的最佳方法[重复]

Posted

技术标签:

【中文标题】对数据进行排序的最佳方法[重复]【英文标题】:Best way to sort data [duplicate] 【发布时间】:2013-12-19 06:28:00 【问题描述】:

在我的 Android 应用程序中,我必须使用从 数据库 获取的数据填充 arraylist 对象。数据也应该排序。所以我有两种方法。

    使用SQL从数据库中取出数据进行排序并放入数组 从数据库中获取数据并将它们放入数组,稍后再对数据进行排序

其中更高效且对运行时的影响更小。需要一些帮助。谢谢!

【问题讨论】:

我希望它在 SQL 中,因为数据库引擎正是为此类任务而设计的,但我没有证据。 我的投票投给第一个选项 我的也是第一个选项 在sql中排序更快更高效。但是,您必须评估它是否符合我们的要求。如果没有,您将必须为您的对象实现一个可比较的接口(如果它们很复杂。用于对象的自定义排序)并完成工作。或者你在两边都执行排序,这样一些负载将被共享,部分排序的行可以在 java 代码中进一步排序。 【参考方案1】:

使用SQL从数据库中取出数据进行排序并放入 数组

如果您能够在数据库级别对数据进行排序,那就去做吧。在数据库级别排序比在内存中排序要快得多 - 特别是如果您的内存在许多记录的情况下是有限的。 还可以通过使用提供许多数据库的索引来提高性能。

因此,如果您可以并且能够在数据库中排序,请在数据库中进行排序。如果没有,请在应用程序中进行排序,但在这里您会受到内存的限制,并且排序速度要慢得多。

注意: 值得一提的是,如果您的排序算法在运行时变化很大(频率很高并且在从数据库中检索数据后开始变化),那么考虑在应用程序中排序和不在数据库中并制作一些 分析侧重于应用程序要求(例如性能)的优势和劣势。

【讨论】:

【参考方案2】:

这取决于很多事情。但对于一般情况,从数据库排序更好,因为它可能在内部使用索引。

【讨论】:

【参考方案3】:

如果您的数据集很小,那么您可以像进行复杂排序一样以编程方式对数据进行排序。

但如果您的数据集很大,那么 DB 排序是最好的方法。在我看来,最好使用 DB 排序。查看 SQL 中的ORDER BY

【讨论】:

【参考方案4】:

如果您使用一些简单的逻辑进行排序,那么最好在从数据库中获取时进行排序。如果是复杂的逻辑,那么 Java 端排序是更好的选择。

【讨论】:

【参考方案5】:

数据库是为按特定顺序检索数据而构建的,因此如果您有选择,请使用数据库进行排序。

但是,如果您的排序要求很复杂并且难以用数据库语言进行编码,那么您应该自己完成。

【讨论】:

以上是关于对数据进行排序的最佳方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用字节比较对结构进行排序的最佳排序算法?

对已旋转 N 次的排序数组进行二进制搜索的最佳方法是啥[重复]

C#中对列表进行排序的方法[重复]

一次请求对多条数据进行排序的算法

在Javascript中对地址数组进行排序[重复]

使用谓词对核心数据进行排序以消除重复