我有一个非常简单的查询和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
谢谢您的时间,如果需要任何其他信息,请告诉我。
查询的最佳索引可能是:PERMANENT_TABLE(state, reference, DOC_TYPE)
。
state
和reference
列应为前两列,但可以任意顺序。
您可以包括其他专栏,但是就性能而言,这可能不是一个大胜利。