Мой вопрос похож на тот, который задан в этой теме: Как избежать этого очень тяжелого запроса, который замедляет работу приложения?
Мы проверили отсутствие индексов внешних ключей и нашлинемного.Добавление отсутствующих индексов на самом деле имело противоположный эффект: оно еще больше замедляло запрос.Одна важная информация заключается в том, что у нашего клиента есть одна установка Oracle, в которой наша схема реплицирована на него 21 раз.В каждой схеме просто 1000 таблиц.Мы слишком много просим у Oracle с таким большим количеством таблиц (и, конечно, индексов)?Я не знаю, какое у них оборудование, но у меня вопрос, является ли это разумным подходом или было бы лучше разделить пользователей на разные идентификаторы безопасности?
Ниже приведен запрос, который выполняется 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