|
|
|
быстрая проверка на существование
|
|||
|---|---|---|---|
|
#18+
требуется проверить, есть ли хотя бы одна запись в таблице, удовл. некоторому условию. Какой способ будет самым-самым по времени выполнения: count,exists, может еще какие варианты? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 10:02 |
|
||
|
быстрая проверка на существование
|
|||
|---|---|---|---|
|
#18+
select count (*) from <таблица> where rownum <= 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 10:05 |
|
||
|
быстрая проверка на существование
|
|||
|---|---|---|---|
|
#18+
спасибо. И тогда сразу еще один вопрос. Отличаются ли чем либо по времени выполнения запросы count(*) и count(id), если, например, id - primary key? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 10:11 |
|
||
|
быстрая проверка на существование
|
|||
|---|---|---|---|
|
#18+
count(*) - возвращает кол-во всех записей и даже NULL count(id) - не NULL Некоторые советуют вместо count(*) использовать - count(rowid) - говорят начиная с 8i это работает и работаетбыстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 10:18 |
|
||
|
быстрая проверка на существование
|
|||
|---|---|---|---|
|
#18+
Jeslji ID - primary key, togda count(id) = count(*) = count(1) ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 10:22 |
|
||
|
быстрая проверка на существование
|
|||
|---|---|---|---|
|
#18+
Зависит от оптимизатора. Иногда count(*) сваливается в full table scan, а count(id) будет использовать fast full scan. Но обычно оптимизатор дает одинаковые планы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 11:14 |
|
||
|
быстрая проверка на существование
|
|||
|---|---|---|---|
|
#18+
Разница может быть видна только результирующем значении (null/not null) Но по планам видно, что перед агрегированием происходят сортировки поможет хит select /*+ index(<pk_индекс>) */ nvl(id, 0) from <таблица> where rownum <= 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 11:39 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32126285&tid=1991324]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
174ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 235ms |
| total: | 504ms |

| 0 / 0 |
