我的问题是类似的,在这个线程的一个构成: How to avoid this very heavy query that slows down the application?Hibernate的索引查询慢
我们检查丢失外键索引和发现了一些。添加缺失的索引实际上具有相反的效果,因为它会进一步减慢查询速度。一条重要信息是我们的客户有一次Oracle安装,其中我们的模式复制了21次。每个模式只有1000个表格。我们是否要求太多的Oracle拥有如此大量的表格(当然还有索引)?我不知道他们的硬件是什么,但我的问题是这是一种合理的方法,还是将用户分解为不同的SID会更好?
以下是Hibernate正在执行的查询。客户告诉我们,这个查询在执行时占用了处理器的45%左右(尽管我不知道该处理多长时间)。
任何建议表示赞赏, 史蒂夫
SELECT NULL AS table_cat,
owner AS table_schem,
table_name,
0 AS non_unique,
NULL AS index_qualifier,
NULL AS index_name,
0 AS TYPE,
0 AS ordinal_position,
NULL AS column_name,
NULL AS asc_or_desc,
num_rows AS CARDINALITY,
blocks AS pages,
NULL AS filter_condition
FROM all_tables
WHERE table_name = 'BOOKING'
AND owner = 'FORWARD_TN'
UNION
SELECT NULL AS table_cat,
i.owner AS table_schem,
i.table_name,
DECODE (i.uniqueness, 'UNIQUE', 0, 1),
NULL AS index_qualifier,
i.index_name,
1 AS TYPE,
c.column_position AS ordinal_position,
c.column_name,
NULL AS asc_or_desc,
i.distinct_keys AS CARDINALITY,
i.leaf_blocks AS pages,
NULL AS filter_condition
FROM all_indexes i,
all_ind_columns c
WHERE i.table_name = 'BOOKING'
AND i.owner = 'FORWARD_TN'
AND i.index_name = c.index_name
AND i.table_owner = c.table_owner
AND i.table_name = c.table_name
AND i.owner = c.index_owner
ORDER BY non_unique,
TYPE,
index_name,
ordinal_position
处理器在oracle服务器上,还是在应用服务器上? – skaffman 2010-12-02 16:54:38
我应该指定。 Oracle服务器是处理器命中的人。 – 2010-12-02 17:54:39