代码之家  ›  专栏  ›  技术社区  ›  Zolt

有没有一种方法可以让快速运行的查询在没有索引的列上进行筛选?

  •  0
  • Zolt  · 技术社区  · 5 年前

    标题说明了一切:有没有一种方法可以让快速运行的查询在没有索引的列上进行筛选?

    SELECT *
    FROM TEST_TABLE
    WHERE INDEXED_DATE_COLUMN BETWEEN TO_DATE( '2019-12-01', 'yyyy-mm-dd' ) AND TO_DATE( '2019-12-02', 'yyyy-mm-dd' );
    

    它运行得非常快,因为它是在索引列上过滤的。

    SELECT *
    FROM TEST_TABLE
    WHERE NOT_INDEXED_DATE_COLUMN BETWEEN TO_DATE( '2019-12-01', 'yyyy-mm-dd' ) AND TO_DATE( '2019-12-02', 'yyyy-mm-dd' );
    

    第二个查询运行得非常慢。我没有在该列上创建索引的权限,有人要求我编写查询,以便它在没有索引的情况下以某种方式快速运行。我想创建索引并使用它,但这不是一个选项,因为在特定情况下我无法控制。

    那么,如何修改查询2以使其像第一个查询一样快速运行呢?

    0 回复  |  直到 5 年前
        1
  •  0
  •   Sheetal Nanda    5 年前

    加快查询运行速度的一种方法是基于NOT U INDEXED U DATE U列对表进行分区。在这种情况下,可以使用基于范围的分区。