Вы сказали в комментарии, что хотите удалить (удалить?) Пустые таблицы. Если вы не хотите, точное количество, но только хочу знать, если таблица пуста вы можете сделать подсчет ярлыка:
select count(*) from table_name where rownum < 2;
Оптимизатор остановится, когда она достигнет первой строки - план выполнения показывает ' count stopkey "- так будет быстро. Он вернет ноль для пустой таблицы, а другой для таблицы с любыми данными - вы не представляете, сколько данных, но вам, похоже, не все равно.
У вас все еще есть небольшое состояние гонки между счетом и падением, конечно.
Это похоже на очень необычную вещь, которую нужно делать - либо ваше приложение использует таблицу, и в этом случае ее падение сломает что-то, даже если оно пустое; или нет, и в этом случае не имеет значения, имеет ли он (предположительно избыточный), и его можно отбросить независимо. Если вы считаете, что может быть путаница, это звучит так, как будто ваш источник (включая DDL) требует некоторой работы, может быть?
Чтобы проверить, имеет ли таблица в двух схемах строку, просто подсчитайте их из обоих; либо с профсоюзом:
select max(c) from (
select count(*) as c from schema1.table_name where rownum < 2
union all
select count(*) as c from schema2.table_name where rownum < 2
);
... или с greatest
и два суб-выбирает, например:
select greatest(
(select count(*) from schema1.table_name where rownum < 2),
(select count(*) from schema2.table_name where rownum < 2)
) from dual;
Либо будет возвращать одно, если либо таблица имеет какие-либо строки, и будет возвращать только нулевой п они были пусты.
С ограничениями и требованиями, которые вы предоставили, я собираюсь сказать «нет». Если эта система используется тысячами людей, и каждый из них обновляет данные в разных схемах, нет ни одной таблицы с этой информацией, если вы не создадите представление/таблицу, а во втором заполняете ее, это может быть устаревшим. Ссылка: http://stackoverflow.com/questions/14125731/oracle-row-count-of-table-by-count-vs-num-rows-from-dba-tables – xQbert
Не могу ли я спросить, ПОЧЕМУ вам нужно мгновение + точное количество строк в любых/всех таблицах в любой момент времени? Разумно обновленная статистика должна дать вам разумный (если не точный) ответ, нет? – tbone
xqbert благодарит вас за комментарий @tbone Я хочу удалить пустые таблицы, поэтому я должен быть точным с результатами, чтобы не удалять неправильные таблицы. и excat = много времени. – MMD