2013-03-15 6 views
0

У меня есть материализованное представление о базе данных Oracle 11g, которая должна содержать много, много строк.Самый быстрый способ проверить, содержит ли материализованное представление любые строки

Какой самый быстрый способ узнать, есть ли в нем какие-либо строки? Меня не интересует, сколько строк, только если оно содержит одну или несколько строк.

Я выполнял запрос COUNT (*), но это слишком долго для запуска. Какие-либо предложения?

Пожалуйста, обратите внимание, что этот вопрос не совсем в отличии от этого другого вопроса: The fastest way to check if some records in a database table?

+0

У вас есть значение auto_increment ID в таблице? Если да, сделайте выбор, где ID = 1? – Borniet

ответ

1

ссылочного ответ вы дали будет работать для вас или:

select /*+ NO_REWRITE */ count(*) from your_mview where rownum = 1; 

, который бы остановить сканирование, как только он нашел 1 строку.

+0

Я просто попробовал это, и потребовалось 920 секунд (!). Если это должно быть возвращено, как только он найдет одну строку, я думаю, что моя проблема в другом месте ... Спасибо за вашу помощь @DazzaL. – mattyB

+0

@mattyB это может быть ваш сегмент таблицы MVIEW, у него было много удалений, и в начале таблицы было много пустых блоков. нет ли каких-либо индексов в MVIEW? если они находятся в столбцах с нулевым или нулевым значением? – DazzaL

+0

Возможно, вам нужно добавить подсказку NO_REWRITE, а на всякий случай. –

Смежные вопросы