Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5   вперед  Ctrl      все
 Как ускорить select count(*) from table  [new]
murzus
Member

Откуда:
Сообщений: 24
Цель быстро подсчитать реальное количество всех строк в БД.
Вариант с num_rows from dba_tables , не подходит - нужно собирать статистику.
Хинт parallel или что-то типа dbms_parrallel тоже не предлагать.
Какие еще варианты?
22 сен 17, 10:00    [20814597]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром началась. КЯЗ
Сообщений: 27502
murzus
реальное количество всех строк в БД
… никому нафиг не нужно, даже приблизительное.
22 сен 17, 10:05    [20814617]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
ацид
Guest
murzus,

пока ты читаешь результат запроса, количество строк может измениться.
22 сен 17, 10:08    [20814632]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
AlexFF__|
Member

Откуда:
Сообщений: 2762
Elic
murzus
реальное количество всех строк в БД
… никому нафиг не нужно, даже приблизительное.

Не скажи, только 2 дня назад выполняли подобную идиотскую просьбу вендора =)
22 сен 17, 10:10    [20814640]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
Taciturn12
Member

Откуда:
Сообщений: 74
Добавить PK на таблицу, желательно по одному небольшому полю, если уже есть и скорость подсчета count не удовлетворяет то удовлетвориться этой скоростью либо использовать приблизительное значение (к примеру те же num_rows).
22 сен 17, 10:18    [20814662]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
murzus
Member

Откуда:
Сообщений: 24
Taciturn12,

Гранты только селективные
22 сен 17, 10:21    [20814675]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 631
Taciturn12,

автор
Цель быстро подсчитать реальное количество всех строк в БД.

....
stax
22 сен 17, 10:24    [20814687]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
murzus
Member

Откуда:
Сообщений: 24
Stax,

Или в таблицах БД
22 сен 17, 10:26    [20814693]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
MaximaXXL
Member

Откуда: Киев
Сообщений: 396
murzus,

Странной желание посчитать все строки ....
Если это единоразовый запрос - запустите на выходные.
Если это на постоянке будет - думайте про Primary Key для всех таблиц
22 сен 17, 10:26    [20814695]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
pihel
Member

Откуда: СПБ
Сообщений: 137
murzus,

приблизительный каунт

select 10 * count(*) from T sample block (10);
22 сен 17, 10:36    [20814726]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
murzus
Member

Откуда:
Сообщений: 24
MaximaXXL,
"думайте про Primary Key для всех таблиц" -А можно подробнее?
Есть таблицы без PK, создавать их - нет грантов.
22 сен 17, 10:38    [20814740]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
orcl_1989
Member

Откуда:
Сообщений: 20
Вариант с count(*) в oracle самый медленный, лучше использовать count(1) - я предпочитаю, хотя по производительности от count(ID) и count(поле) сильно не отличается.
22 сен 17, 10:39    [20814746]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 631
MaximaXXL
murzus,

Странной желание посчитать все строки ....
Если это единоразовый запрос - запустите на выходные.
Если это на постоянке будет - думайте про Primary Key для всех таблиц

зачем ПК (может і не быть) достаточно "not null" индекса

если нет, напр create index i$t1 on t1(0);

.....
stax
22 сен 17, 10:49    [20814819]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
MaximaXXL
Member

Откуда: Киев
Сообщений: 396
murzus
MaximaXXL,
"думайте про Primary Key для всех таблиц" -А можно подробнее?
Есть таблицы без PK, создавать их - нет грантов.


Я так понимаю нет грантов у Вас. И я почему то уверен что Вы знаете ДБА у которых все же есть доступ с правами на создание PK.
т.о. Вы пишете на них письмо (или как Вы коммуницируетесь) где просите создать PK для (список таблиц и полей) и проанализировать последствия (вот даже не представляю что у Вас за база) добавления. В письме указываете для чего Вам понадобились эти PK.
22 сен 17, 10:50    [20814829]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 631
orcl_1989
Вариант с count(*) в oracle самый медленный, лучше использовать count(1) - я предпочитаю, хотя по производительности от count(ID) и count(поле) сильно не отличается.

имхо легенда

ps
пользую *
.....
stax
22 сен 17, 10:51    [20814831]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 631
MaximaXXL
murzus
MaximaXXL,
"думайте про Primary Key для всех таблиц" -А можно подробнее?
Есть таблицы без PK, создавать их - нет грантов.


Я так понимаю нет грантов у Вас. И я почему то уверен что Вы знаете ДБА у которых все же есть доступ с правами на создание PK.
т.о. Вы пишете на них письмо (или как Вы коммуницируетесь) где просите создать PK для (список таблиц и полей) и проанализировать последствия (вот даже не представляю что у Вас за база) добавления. В письме указываете для чего Вам понадобились эти PK.

как для чего, для подсчета к-ва записей по совету MaximaXXL

....
stax
22 сен 17, 10:53    [20814847]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
MaximaXXL
Member

Откуда: Киев
Сообщений: 396
Stax
как для чего, для подсчета к-ва записей по совету MaximaXXL

....
stax


ну не сам же ТС придумал себе задачу строки считать хотя и такие бывают
22 сен 17, 11:01    [20814899]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
murzus
Member

Откуда:
Сообщений: 24
Кроме индексов ничего нет?(
22 сен 17, 11:08    [20814945]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 631
MaximaXXL,

у меня первый скрипт с dbms_sql был подсчет строк в таблицах схемы (сам придумал)

.....
stax
22 сен 17, 11:09    [20814952]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
Fogel
Member

Откуда:
Сообщений: 267
РК зачем городить?
Можно обойтись rowid
22 сен 17, 11:19    [20815009]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
ORA__SQL
Member

Откуда: Moscow
Сообщений: 1767
Fogel
РК зачем городить?
Можно обойтись rowid
А ты сравни
22 сен 17, 11:24    [20815027]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 631
murzus
Кроме индексов ничего нет?(


в чем проблема? долго? как часто считаете?

СВО сам разберется
где есть индекс - по нему посчитает, где нет - фулл скан таблицы

можно хинт index/index_ffs указать, но надо ли

.....
stax
22 сен 17, 11:25    [20815033]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
murzus
Member

Откуда:
Сообщений: 24
Fogel
РК зачем городить?
Можно обойтись rowid


Так,так...
А можно подробнее?
22 сен 17, 11:26    [20815035]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 631
murzus
Fogel
РК зачем городить?
Можно обойтись rowid


Так,так...
А можно подробнее?


зачем Вам ПК, ровид, достаточно fbi константы (напр 0) и права на создание индексов

ps
я ж привел пример

.....
stax
22 сен 17, 11:31    [20815064]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить select count(*) from table  [new]
подстрекатель
Guest
orcl_1989
Вариант с count(*) в oracle самый медленный, лучше использовать count(1) - я предпочитаю, хотя по производительности от count(ID) и count(поле) сильно не отличается.


Где все? Elic? Фотошоп? Анонимус?
22 сен 17, 11:41    [20815122]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5   вперед  Ctrl      все
Все форумы / Oracle Ответить