【发布时间】:2013-10-15 10:05:14
【问题描述】:
我们在生产环境中有 Oracle 11G R2。
我喜欢提高 1 个查询的性能
select ....
from FORMX
where (INF_TYP =?)
AND (STATUS IN (?, ?, ?, ?, ?, ?))
AND ((VAL_DAT>=? OR VAL_DAT IS NULL));
VAL_DAT 列的类型是 DATE。
将索引添加到 VAL_DAT 不会产生明显的效果。
任何想法如何调整或如何更改查询?
编辑
我们在该表中总共有大约 15 万条记录(生产 1 年)
大约 8% 的记录的条件 VAL_DAT is null 为真。
“INF_TYP”和“STATUS”的类型是 VARCHAR2(2 CHAR) 和 VARCHAR2(10 CHAR)。
【问题讨论】:
-
信息不足。你的表有多大(有多少行,平均行空间)?每个过滤器应该返回多少行? VAL_DAT=null 有多少行?索引的
clustering_factor是什么? -
@Vincent 说了什么 + 条件 1 和条件 2 是什么?表上还有哪些其他索引?
-
我更新了问题。 @Vincent Malgrat 我现在不知道 clustering_factor 的价值,因为我现在没有索引。
标签: sql oracle oracle11gr2