我的查询大约需要2分钟才能执行,有关如何改进查询的建议,以减少这2分钟的等待时间。
我的查询:
SELECT
PRICE, VOLUME, BLOCK
FROM
owner.table
WHERE
basis = 'location_name" AND
tableSource = 'DetailTable' AND
type = 'Sales' AND
contractMonth = '05' AND
to_char(createDate,'YYYY-MM-DD') = '2016-01-01'
答案 0 :(得分:0)
首先,我会将查询重写为:
SELECT t.PRICE, t.VOLUME, t.BLOCK
FROM owner.table t
WHERE basis = 'location_name' AND
tableSource = 'DetailTable' AND
type = 'Sales' AND
contractMonth = '05' AND
createDate >= date '2016-01-01' AND
createDate < date '2016-01-02';
然后,为了提高性能,请在(basis, tableSource, type, contractMonth, createDate)
上创建索引。
您还可以添加price
,volume
和block
作为索引中的最后三列。然后索引覆盖查询,这意味着索引具有所有列,并且不需要加载原始数据页。
答案 1 :(得分:0)
检查索引并确保索引列类型与您的值类型相同。例如;是contractMonth列号或varchar等。因为如果要使用索引,则等式中的每一边必须是相同的类型。另外,请根据实际直方图检查上次分析的日期以进行真正的优化。