【问题标题】:oracle order by optimizationoracle order by 优化
【发布时间】:2018-03-27 09:06:06
【问题描述】:

我在一个大表上运行一个查询,我期待大量的返回行。 不幸的是,我需要按 2 列对结果进行排序,这使得查询很慢。

我为这些特定列添加了一个索引,但我想知道订单方向是否会有所不同。 一列是降序排列,一列是升序排列。

感谢和最良好的祝愿, e.

【问题讨论】:

  • hi Ele - 索引告诉数据库需要获取文件系统上的哪些块 - 这样可以加快数据检索速度。我不认为索引会加速以后的处理(例如排序数据)。我认为 order by 的方向根本不会产生任何影响。显然 order by 子句在检索到所有数据之前无法执行其操作(从文件系统中脱落的最后一行可能是您想要查看的第一行)。在返回任何数据之前,您会看到延迟
  • 嗨@ChristianPalmer,我阅读了很多文章,建议创建一个与您的order by 参数相同的索引,因为索引将以正确的方式对数据进行排序。查看一个简单示例的执行计划强调了论文,例如use-the-index-luke.com/de/sql/sortieren-gruppieren/…

标签: oracle indexing sql-order-by


【解决方案1】:

您的查询可能受益于与您的 order by 子句相同的索引排序方式,例如

create index index1 on table1 (col1 desc, col2 asc);

它是否会受益取决于索引扫描和表查找与简单的全表扫描相比的相对成本。如果您想要的行数相对于表中的总行数较低,则查询可能会受益。

唯一确定的方法就是尝试一下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-31
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多