powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / быстрая проверка на существование
8 сообщений из 8, страница 1 из 1
быстрая проверка на существование
    #32126261
nevermind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
требуется проверить, есть ли хотя бы одна запись в таблице, удовл. некоторому условию. Какой способ будет самым-самым по времени выполнения: count,exists, может еще какие варианты? Спасибо.
...
Рейтинг: 0 / 0
быстрая проверка на существование
    #32126264
Alto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select count (*)
from <таблица>
where rownum <= 1
...
Рейтинг: 0 / 0
быстрая проверка на существование
    #32126273
nevermind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо. И тогда сразу еще один вопрос. Отличаются ли чем либо по времени выполнения запросы count(*) и count(id), если, например, id - primary key?
...
Рейтинг: 0 / 0
быстрая проверка на существование
    #32126285
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
count(*) - возвращает кол-во всех записей и даже NULL
count(id) - не NULL

Некоторые советуют вместо count(*) использовать - count(rowid) - говорят начиная с 8i это работает и работаетбыстрее.
...
Рейтинг: 0 / 0
быстрая проверка на существование
    #32126290
Delerium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jeslji ID - primary key, togda count(id) = count(*) = count(1) ...
...
Рейтинг: 0 / 0
быстрая проверка на существование
    #32126346
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зависит от оптимизатора. Иногда count(*) сваливается в full table scan, а count(id) будет использовать fast full scan. Но обычно оптимизатор дает одинаковые планы.
...
Рейтинг: 0 / 0
быстрая проверка на существование
    #32126374
Alto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разница может быть видна только результирующем значении (null/not null)
Но по планам видно, что перед агрегированием происходят сортировки
поможет хит
select /*+ index(<pk_индекс>) */ nvl(id, 0)
from <таблица>
where rownum <= 1
...
Рейтинг: 0 / 0
быстрая проверка на существование
    #32126381
va_kochnev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select count(*) from dual
where exists (select 1 from <таблица> where <некоторое условие>)

Если 1 - существует, 0 -нет
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / быстрая проверка на существование
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]