如何通过索引减少此查询的操作时间?

问题描述 投票:0回答:1

我有一个非常简单的查询和8718个寄存器池,它的运行时间约为7秒,我不理解其背后的原因。我尝试使用利用文档类型,状态和引用(基本上是WHERE子句中的变量)的索引。甚至即使利用了该指数,也没有降低其死亡率或成本。

我看不到任何一种减小查询大小的方法,因此我猜想它一定是索引问题。我将不胜感激。

    SELECT TELEPHONE AS telephone, 
    GROUP AS group, 
    UPPER(GROUPNAME) AS groupName, 
    RECEIPTID AS receiptId, 
    sum(CHARGED) AS charged, 
    sum(PAID) AS paid, 
    YEAR as year, 
    MONTH as month 

    FROM PERMANENT_TABLE 
    where DOC_TYPE in('0', '01', '04') 
    and state = X 
    and reference = XXXXX
    GROUP BY TELEPHONE, RECEIPTID, GROUP, GROUPNAME, YEAR, 
    MONTH;

基数/费用:

分组依据:8718/7893索引:30741/6168

谢谢您的时间,如果需要任何其他信息,请告诉我。

sql oracle indexing
1个回答
0
投票

查询的最佳索引可能是:PERMANENT_TABLE(state, reference, DOC_TYPE)

statereference列应为前两列,但可以任意顺序。

您可以包括其他专栏,但是就性能而言,这可能不是一个大胜利。

© www.soinside.com 2019 - 2024. All rights reserved.