Мне нужен более быстрый способ подсчета определенных записей в большой таблице, содержащей более 11 миллиардов строк.
Я запускаю запрос ниже, и он получает счет в 1 секунду из 11 + миллиардов строк
SELECT a.TABLE_NAME, to_char ( a.NUM_ROWS ), b.COLUMN_NAME
FROM ALL_TABLES a, ALL_TAB_COLUMNS b
WHERE a.table_name = 'OBJECT_TABLE'
and a.TABLE_NAME = b.TABLE_NAME
and b.owner = 'XX_ST'
and b.COLUMN_NAME = 'OBJECT_TYPE'
Результат: OBJECT_TABLE 11042049900 OBJECT_TYPE
Я хочу запросить OBJECT_TABLE и получить только некоторые OBJECT_TYPES, но не все.
Если я запускаю такой запрос, это займет очень много времени
SELECT count (*)
FROM OBJECT_TABLE a
WHERE a.OBJECT_TYPE in ( 425, 989 ).
Из этого запроса я бы ожидал 100 000 из 11 + миллиардов строк.
Есть ли способ использовать ALL_TABLES a, ALL_TAB_COLUMNS b для ускорения выполнения запроса, чтобы ТОЛЬКО получить определенные строки, но не все из определенной таблицы?
Любая помощь приветствуется