【问题标题】:Should sorting be done in java or oracle for performance reasons [duplicate]出于性能原因,是否应该在 java 或 oracle 中进行排序[重复]
【发布时间】:2013-07-18 03:02:06
【问题描述】:

如果我从我的 java 应用程序中进行 oracle 查询并且该 oracle 查询返回一个大列表,那么更有效的排序方式是:使用 oracle order by 子句或使用 Collections.sort(list) 在 java 中进行排序? 我直观地理解在oracle中这样做更快但找不到原因

【问题讨论】:

  • SQL 数据库中的索引在输入时排序。这意味着您在插入时会产生排序/索引成本。之后,如果列被索引,则索引已经排序

标签: java performance oracle sorting


【解决方案1】:

查看有关该问题的答案:database sort vs. programmatic java sort

基本上,如果你有几行数据(10-100)从代码中排序会更快,否则使用数据库,它们就是为这种东西设计的

【讨论】:

    【解决方案2】:

    如果该列被索引,那么我相信 DB 中的 ORDER BY 的处理速度将比 Java 中的结果集排序更快。数据库旨在处理大量数据,并且具有各种优化技术。再次根据实际的查询字符串,数据库优化器可能会选择一个按顺序返回数据而不执行排序的查询计划。好吧,如果体积很大,我会将工作留给 DB,而不是将整个结果加载到内存中并在 Java 中对其进行排序,更不用说 CPU 使用率等......

    【讨论】:

    • 即使没有索引,Oracle 与任何其他严肃的 DBMS 一样,排序可能比 Java 快得多。正如您所说,数据库旨在有效处理大量数据。数据库中的排序算法非常受关注,因此它们往往非常有效。数据库服务器通常比客户端拥有更多的内存。如果多个连接请求相同的结果集,排序后的结果可能会被共享,而在客户端,每个会话都必须对自己的结果进行排序。这些是您不应该在客户端进行排序的一些原因。
    猜你喜欢
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 2010-10-03
    相关资源
    最近更新 更多