【问题标题】:Is perl sort better than Oracle sort?perl 排序比 Oracle 排序好吗?
【发布时间】:2014-04-25 12:00:31
【问题描述】:

如果在 Oracle 中使用 ORDER BY 的查询占用的缓冲区数量是没有 ORDER BY 的查询的 10 倍,那么假设我应该将排序留给业务层(perl 的排序)是否安全?

【问题讨论】:

  • 您可能会出于扩展原因而不是性能原因决定将排序移至业务层(假设您的业务层中配置更多 CPU/RAM 通常更便宜)代码是按比例构建的)。但前提是此特定查询的影响力足以让您找出最适合您的架构的查询。
  • 考虑使用explain plan 进行排序查询。

标签: oracle perl sorting sql-order-by


【解决方案1】:

在其他条件相同的情况下,我会选择 Oracle 排序。有了正确的索引,这应该会更有效率。

我等待使用 Perl 进行排序的唯一原因是如果我需要使用最新版本的 Unicode 排序规则,因为 Perl 跟踪 Unicode 标准的速度往往比 Oracle 的人要快一些。 perlbrew 也可用于以非破坏性方式将更多现代 perl 版本添加到您的计算机,其痛苦远低于 Oracle 升级。当然,这假定您被允许在业务层中安装当前版本的 Perl...

【讨论】:

    【解决方案2】:

    很可能 perl 可能是更快的排序引擎。不久前,一个网站 (http://onlyjob.blogspot.com/2011/03/perl5-python-ruby-php-c-c-lua-tcl.html) 发布了各种语言的基准比较。尽管 perl 是用 C 编写的,但在某些测试中它比 C 更快。

    如果这是您经常执行的查询,您可能需要考虑在 oracle 上直接创建某种索引或存储过程,这可能会加快查询速度。但是,如果您对 Oracle 数据库没有太多控制权,请务必使用 perl 的忍者风格。

    将事情留在 Oracle 端的主要优势之一是您可以调整 oracle 以使您的特定查询更快,如果您的数据集最终增长,您理论上也可以加强或集群您的 oracle 服务器。

    【讨论】:

    • 从一开始,Perl 确实是一个令人印象深刻的工具,但是向 Oracle 提供索引的能力可以让它显着领先...
    【解决方案3】:

    我看不出任何逻辑为什么业务层会比 Oracle 执行排序更快或更慢。业务层需要像 Oracle 需要的那样进行排序和缓冲。并且指定单行“ORDER BY [column]”可能比任何客户端代码都容易得多。

    【讨论】:

    • 排序依据是一个字段,这是一个巨大的 case..end 子句的结果。
    • 那么我所说的一切仍然适用。但请把一切都放在你的问题中。
    猜你喜欢
    • 2011-04-06
    • 2015-12-29
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 2012-11-30
    • 2013-08-24
    相关资源
    最近更新 更多