【发布时间】:2009-07-22 00:49:48
【问题描述】:
由于对特定表进行全表扫描,我有一个进程性能不佳。我已经计算了统计数据,重建了现有索引并尝试为该表添加新索引,但这并没有解决问题。
隐式类型转换可以停止正在使用的索引吗?其他原因呢?全表扫描的成本比索引查找的成本高出大约 1000 倍。
编辑:
SQL语句:
select unique_key
from src_table
where natural_key1 = :1
and natural_key2 = :2
and natural_key3 = :3;
- natural_key1 的基数较高,但存在类型转换。
- 自然键的其他部分是低基数,未启用位图索引。
- 表大小约为 1,000,000 条记录。
Java 代码(不易修改):
ps.setLong(1, oid);
这与列数据类型冲突:varchar2
【问题讨论】:
-
能否提供问题查询?
-
能否提供执行查询的代码sn-p?
标签: database performance oracle indexing