【问题标题】:Performance Issue - Join/Index性能问题 - 加入/索引
【发布时间】:2017-02-28 19:01:32
【问题描述】:

我有这个问题:

SELECT *
  FROM (SELECT *
          FROM jmr_bbi_dife_vendas_neg2 dife
         WHERE     dife.processado = 'N'
               AND dife.removido = 'N'
               AND dife.revertido = 'N'
               AND TO_DATE(LPAD(dife.DAY, 2, '0') || LPAD(dife.MONTH, 2, '0') || dife.YEAR, 'DDMMYYYY') <= to_date('20160331','YYYYMMDD')
       ) dife
       LEFT JOIN jmr_bbi_dade_vendas dade
           ON     dade.codins = 1
              AND dade.codneg = 2
              AND dade.tipdoc_vnd = dife.doc_type
              AND dade.numdoc_vnd = dife.doc_no
              AND dade.codart = dife.item
              AND dade.anoper = dife.year
              AND dade.mesper = dife.month;

我在 DADE 上创建索引。 Index

但是当我对这个查询执行解释计划时,没有使用索引:

Explain Plan

我已经执行了全表的收集统计信息,但也不工作。

可以帮帮我吗?

这两个表:DIFE 和 DADE 是 2 个表示例。 我彼此的原始表有数百万行。

谢谢!

【问题讨论】:

    标签: performance join indexing


    【解决方案1】:

    在连接条件中使用的两个表的列上创建索引。

    还将dade.codins = 1 AND dade.codneg = 2 移动到 where 条件中

    【讨论】:

    • 好伙伴!将尝试在具有百万行的表上查看结果! :)
    • 好吧,伙计...不要工作! :(如果我按照你所说的那样进行查询,它不会返回任何结果.... :(
    • 还有什么想法吗? :(
    猜你喜欢
    • 2018-12-20
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 2022-11-17
    相关资源
    最近更新 更多