powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как ускорить select count(*) from table
107 сообщений из 107, показаны все 5 страниц
Как ускорить select count(*) from table
    #39524656
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Цель быстро подсчитать реальное количество всех строк в БД.
Вариант с num_rows from dba_tables , не подходит - нужно собирать статистику.
Хинт parallel или что-то типа dbms_parrallel тоже не предлагать.
Какие еще варианты?
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524661
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murzusреальное количество всех строк в БД… никому нафиг не нужно, даже приблизительное.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524662
ацид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
murzus,

пока ты читаешь результат запроса, количество строк может измениться.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524665
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicmurzusреальное количество всех строк в БД… никому нафиг не нужно, даже приблизительное.
Не скажи, только 2 дня назад выполняли подобную идиотскую просьбу вендора =)
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524670
Taciturn12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавить PK на таблицу, желательно по одному небольшому полю, если уже есть и скорость подсчета count не удовлетворяет то удовлетвориться этой скоростью либо использовать приблизительное значение (к примеру те же num_rows).
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524672
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Taciturn12,

Гранты только селективные
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524675
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Taciturn12,

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

....
stax
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524677
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

Или в таблицах БД
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524678
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murzus,

Странной желание посчитать все строки ....
Если это единоразовый запрос - запустите на выходные.
Если это на постоянке будет - думайте про Primary Key для всех таблиц
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524682
pihel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
murzus,

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

select 10 * count(*) from T sample block (10);
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524685
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXL,
"думайте про Primary Key для всех таблиц" -А можно подробнее?
Есть таблицы без PK, создавать их - нет грантов.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524686
orcl_1989
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вариант с count(*) в oracle самый медленный, лучше использовать count(1) - я предпочитаю, хотя по производительности от count(ID) и count(поле) сильно не отличается.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524692
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXLmurzus,

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

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

.....
stax
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524693
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murzusMaximaXXL,
"думайте про Primary Key для всех таблиц" -А можно подробнее?
Есть таблицы без PK, создавать их - нет грантов.

Я так понимаю нет грантов у Вас. И я почему то уверен что Вы знаете ДБА у которых все же есть доступ с правами на создание PK.
т.о. Вы пишете на них письмо (или как Вы коммуницируетесь) где просите создать PK для (список таблиц и полей) и проанализировать последствия (вот даже не представляю что у Вас за база) добавления. В письме указываете для чего Вам понадобились эти PK.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524694
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orcl_1989Вариант с count(*) в oracle самый медленный, лучше использовать count(1) - я предпочитаю, хотя по производительности от count(ID) и count(поле) сильно не отличается.
имхо легенда

ps
пользую *
.....
stax
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524695
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXLmurzusMaximaXXL,
"думайте про Primary Key для всех таблиц" -А можно подробнее?
Есть таблицы без PK, создавать их - нет грантов.

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

....
stax
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524702
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxкак для чего, для подсчета к-ва записей по совету MaximaXXL

....
stax

ну не сам же ТС придумал себе задачу строки считать хотя и такие бывают
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524714
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кроме индексов ничего нет?(
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524715
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXL,

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

.....
stax
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524724
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РК зачем городить?
Можно обойтись rowid
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524726
ORA__SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FogelРК зачем городить?
Можно обойтись rowidА ты сравни
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524728
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murzusКроме индексов ничего нет?(

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

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

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

.....
stax
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524729
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FogelРК зачем городить?
Можно обойтись rowid

Так,так...
А можно подробнее?
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524736
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murzusFogelРК зачем городить?
Можно обойтись rowid

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

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

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

.....
stax
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524744
orcl_1989Вариант с count(*) в oracle самый медленный, лучше использовать count(1) - я предпочитаю, хотя по производительности от count(ID) и count(поле) сильно не отличается.


Где все? Elic? Фотошоп? Анонимус?
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524746
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подстрекательorcl_1989Вариант с count(*) в oracle самый медленный, лучше использовать count(1) - я предпочитаю, хотя по производительности от count(ID) и count(поле) сильно не отличается.


Где все? Elic? Фотошоп? Анонимус?

count(поле) результат от */0 может отличатся, да и производительность тоже

.....
stax
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524747
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

a count(*) от count(1)? Не поленись, проведи говноработу как обычно. И приложи сравнение. Защитник ты наш.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524748
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

Хотел узнать все варианты для ридонли .
create fbi по всем таблицам требует прав и лишних ресурсов
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524752
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murzusFogelРК зачем городить?
Можно обойтись rowid

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

пример реализации идеи (среды нет под рукой, пишу в блокноте из горящего танка ):

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
declare
cnt pls_integer := 0;
begin
for i in (select distinct owner||'.'||name as tab from dba_tables) loop
cnt := cnt + execute immediate 'select count(rowid) from '||i.tab;
end loop;
dbms_output.put_line(cnt);
end;



Если таблицы от десятков миллионов строк и больше, набор в курсоре делите ещё на партиции/субпартиции - несмотря на увеличение кол-ва операций суммарно будет быстрее.

как-то так.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524753
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подстрекательorcl_1989Вариант с count(*) в oracle самый медленный, лучше использовать count(1) - я предпочитаю, хотя по производительности от count(ID) и count(поле) сильно не отличается.


Где все? Elic? Фотошоп? Анонимус?Очень тухлый вброс. Нет огонька.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524754
dbms_photoshop, извини. Я должен лучше вбрасывать. Попробую в другой теме.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524760
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подстрекатель,

Речь не про тебя, а про ТС.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524772
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
select sum(num_rows) from dba_tables;


конечно, это будет незнамо_что, враки, но каков вопрос..
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524775
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawishконечно, это будет незнамо_что, враки, но каков вопрос..Уверен, что дочитал его до конца?murzusВариант с num_rows from dba_tables , не подходит
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524782
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..Stax,

a count(*) от count(1)? Не поленись, проведи говноработу как обычно. И приложи сравнение. Защитник ты наш.

кого защитник? почему Ваш?

зачем мне сравнение, я пользую *

ps
неужели Вам так принципиально постить под ником stax..?

....
stax
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524783
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic..Уверен, что дочитал его до конца?..
и действительно, упс
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524841
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а на какой момент времени сабж? Где консистентность?
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524845
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fogel
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
declare
cnt pls_integer := 0;
begin
for i in (select distinct owner||'.'||name as tab from dba_tables) loop
cnt := cnt + execute immediate 'select count(rowid) from '||i.tab;
end loop;
dbms_output.put_line(cnt);
end;





Неверно. Если в БД меняется количество строк то результат не будет соответствовать ни одному состоянию БД.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524851
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XMLerFogel
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
declare
cnt pls_integer := 0;
begin
for i in (select distinct owner||'.'||name as tab from dba_tables) loop
cnt := cnt + execute immediate 'select count(rowid) from '||i.tab;
end loop;
dbms_output.put_line(cnt);
end;





Неверно. Если в БД меняется количество строк то результат не будет соответствовать ни одному состоянию БД.

можно в начало блока добавить дату для фиксации и считать всё на scn по ней.
так будет кол-во на определённый момент времени. ТС именно это вроде и хотел.
я описал идею, а подробности уже зависят от конкретики требований и рабочей среды.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524863
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XMLerНеверно. Если в БД меняется количество строк то результат не будет соответствовать ни одному состоянию БД.Положи руку на сердце и скажи, какая нахрен разница, что бессмысленная цифра имеет точность плюс-минус лапоть?
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39524875
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XMLerFogel
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
declare
cnt pls_integer := 0;
begin
for i in (select distinct owner||'.'||name as tab from dba_tables) loop
cnt := cnt + execute immediate 'select count(rowid) from '||i.tab;
end loop;
dbms_output.put_line(cnt);
end;





Неверно. Если в БД меняется количество строк то результат не будет соответствовать ни одному состоянию БД.

перед пересчетом set read only (ето если не одним запросом)

.....
stax
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39525106
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fogelmurzusпропущено...


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

пример реализации идеи (среды нет под рукой, пишу в блокноте из горящего танка ):

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
declare
cnt pls_integer := 0;
begin
for i in (select distinct owner||'.'||name as tab from dba_tables) loop
cnt := cnt + execute immediate 'select count(rowid) from '||i.tab;
end loop;
dbms_output.put_line(cnt);
end;



Если таблицы от десятков миллионов строк и больше, набор в курсоре делите ещё на партиции/субпартиции - несмотря на увеличение кол-ва операций суммарно будет быстрее.

как-то так.


Т.е. хотите сказать, что "select count(rowid) from t "быстрее чем "select count(*) from t?"
Так разве не тоже самое будет?:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
declare
cnt pls_integer := 0;
begin
for i in (select distinct owner||'.'||name as tab from dba_tables) loop
cnt := cnt + execute immediate 'select count(*) from '||i.tab;
end loop;
dbms_output.put_line(cnt);
end;
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39525138
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murzus
Т.е. хотите сказать, что "select count(rowid) from t "быстрее чем "select count(*) from t?"


Так разве не тоже самое будет?:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
declare
cnt pls_integer := 0;
begin
for i in (select distinct owner||'.'||name as tab from dba_tables) loop
cnt := cnt + execute immediate 'select count(*) from '||i.tab;
end loop;
dbms_output.put_line(cnt);
end;


я "сказал", что PK для данной задачи городить незачем, когда есть rowid

"то же самое" или не "то же самое" - сверьте сами, если интересно.
моё личное мнение: на ооооооооооооочень больших наборах данных (в том числе в объёме учитывается и как хранятся типы данных: 5 колонок number все равно меньше одной колонки varchar2) rowid выигрывает, на небольших наборах, если тип данных занимает мало место для хранения, то * выиграет из-за отсутствия накладных расходов на получение rowid
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39525152
Fogelкогда есть rowidну, а если его нет?

Fogelнакладных расходов на получение rowidрасходы можно и не накладывать.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39525210
проходил мимо...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fogelя "сказал", что PK для данной задачи городить незачем, когда есть rowid

"то же самое" или не "то же самое" - сверьте сами, если интересно.
моё личное мнение: на ооооооооооооочень больших наборах данных (в том числе в объёме учитывается и как хранятся типы данных: 5 колонок number все равно меньше одной колонки varchar2) rowid выигрывает, на небольших наборах, если тип данных занимает мало место для хранения, то * выиграет из-за отсутствия накладных расходов на получение rowid
Вы просто не поняли, зачем PK. Индекс обычно значительно меньше, чем таблица, поэтому его целиком будет прочитать быстрее. С rowid это не прокатит.
Звезда в каунте не расшифровывается до списка столбцов, как минимум, когда есть индекс по not null полю - это легко проверить посмотрев на план запроса.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39525274
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicXMLerНеверно. Если в БД меняется количество строк то результат не будет соответствовать ни одному состоянию БД.Положи руку на сердце и скажи, какая нахрен разница, что бессмысленная цифра имеет точность плюс-минус лапоть?может, у них на это SLA заточен, и всякие EditDA
количество созданных строк в день
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39525391
eupro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Боюсь сама конструкция count(*) не оптимальна, правильнее выбрать некое поле.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39525412
euproБоюсь сама конструкция count(*) не оптимальна, правильнее выбрать некое поле.select поле from таблица и подсчитывать количество строк на калькуляторе.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39525429
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Да что ж такое, сколько уже можно поддерживать древние ошибочные мифы!

Нет никакого смысла заменять count(*) на count(1), count(любое_не_NULL_поле), count(поле_первичного_ключа), count(rowid) и прочие фантазии, т.к.:

1. count(*) и так уже оптимален: он просто считает строки! Ему не нужны все поля и, уж тем более, он их ни с чем не сравнивает. Оракл сам выберет что лучше: фулсканить ли таблицу или фастфулсканить какой-нибудь индекс и если - да, то какой, но это, естественно, при условии что вы не меняли дефолтные параметры (например, занижение optimizer_index_cost_adj может привести к index full scan вместо index fast full scan)

2. У Оракла есть трансформация "Count(col) to Count(*) (CNT)", которая превращает count(0), count(1), count(любое_поле) в count(*). Так что реально в таких случаях оракл перепишет ваш запрос на count(*).
Эту трансформацию ораклу как раз пришлось разработать из-за таких дурацких мифов, чтобы эти извращенные запросы работали так же эффективно как и count(*).

3. Даже если вы извратились еще больше и написали count(-1) или count(rowid) (они не входят в "special cases" из п.2), то даже в этом случае оракл все равно построит тот же план что и для count(*)


Это же уже многократно объяснялось...
Вот в очередной раз у Льюиса: https://jonathanlewis.wordpress.com/2015/01/06/count-4/
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39525637
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicXMLerНеверно. Если в БД меняется количество строк то результат не будет соответствовать ни одному состоянию БД.Положи руку на сердце и скажи, какая нахрен разница, что бессмысленная цифра имеет точность плюс-минус лапоть?

Никакой. Окажись я на месте ТСа ответил бы 4378823478969123469. Пусть проверяют.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39525782
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XMLerНикакой. Окажись я на месте ТСа ответил бы 4378823478969123469. Пусть проверяют.

Ну разница eсть. Пример. Разработчики тестируют Informatica workflow. Лог показывает чтение source идет со скоростью N строк в секунду. Это хорошо или плохо? Не зная числа строк в production source мы не можем эстраполировать время выполнения workflow в production. Так-что приходится давать разработчикам числo строк. Правда микроны тут не нужны и NUM_ROWS от dbms_stats вполне достаточно.

SY.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39525823
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY,

Но это обычно для 1-10 таблиц, а не для всей базы. 10-ки таблиц справочники с устоявшимся набором данных и число ВСЕХ строк в таблицах величина абстрактная но никому не нужная =(. Во всяком случае я не могу себе придумать задачу где мне такое может понадобиться. И что делать с вьюхами - ума не приложу.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39525867
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SYXMLerНикакой. Окажись я на месте ТСа ответил бы 4378823478969123469. Пусть проверяют.

.. приходится давать разработчикам числo строк. Правда микроны тут не нужны и NUM_ROWS от dbms_stats вполне достаточно.

SY.
Это если статистика собирается, а если разница count(*) vs NUM_ROWS >100K то не достаточно.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39525875
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murzusЭто если статистика собирается, а если разница count(*) vs NUM_ROWS >100K то не достаточно.
А что мешает больше ресурсов выделять на сбор статистики? Что count постоянный гонять, что это, а от статистики может еще какая польза будет. Ну или вред. :)
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39525880
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murzusЭто если статистика собирается, а если разница count(*) vs NUM_ROWS >100K то не достаточно.

А это зависит от COUNT(*). Разница в 100K для таблицы в 100M роли не играет а вот для таблицы в 1M да, и если у тебя по такой растущей таблице статистика не сибирается то у тебя похоже куда больше проблем чем счет строк.

SY.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39525890
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей АрсеньевmurzusЭто если статистика собирается, а если разница count(*) vs NUM_ROWS >100K то не достаточно.
А что мешает больше ресурсов выделять на сбор статистики? Что count постоянный гонять, что это, а от статистики может еще какая польза будет. Ну или вред. :)
Маэмо, що маэмо)
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39525898
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SYmurzusЭто если статистика собирается, а если разница count(*) vs NUM_ROWS >100K то не достаточно.

А это зависит от COUNT(*). Разница в 100K для таблицы в 100M роли не играет а вот для таблицы в 1M да, и если у тебя по такой растущей таблице статистика не сибирается то у тебя похоже куда больше проблем чем счет строк.

SY.

Это был пример, таблиц куча , и разница не устраивает. Вы пытаетесь помочь решить задачу организационно, но цель топика найти техническое решение. Задача если что уже решена, хотел просто узнать -может кто-то уже сталкивался и как-то ускорил.
Но пока ничего нет, кроме как считать индексы или методы типа бить таблицу и считать параллельно(мэп-редьюс).
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39525982
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ради бога:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
SELECT  OWNER,
        TABLE_NAME,
        XMLCAST(
                XMLQUERY(
                         '/ROWSET/ROW/CNT'
                         PASSING DBMS_XMLGEN.GETXMLTYPE(
                                                        'SELECT  COUNT(*) CNT
                                                           FROM  "' || OWNER || '". "' || TABLE_NAME || '"'
                                                       )
                         RETURNING CONTENT
                        )
                AS NUMBER
               ) ROW_COUNT
  FROM  DBA_TABLES T
  WHERE OWNER = '&SCHEMA_NAME'
    AND TABLE_NAME NOT LIKE 'MLOG$\_%' ESCAPE '\' -- exclude materialized view logs
    AND NVL(IOT_TYPE,'NOT_IOT') NOT IN ('IOT_OVERFLOW','IOT_MAPPING') -- exclude IOT overflow and mapping
    AND TEMPORARY = 'N' -- exclude temporary tables
    AND SECONDARY = 'N' -- exclude Oracle Text index tables and other "non-tables"
    AND TABLE_NAME NOT IN (
                           SELECT  E.TABLE_NAME
                             FROM  DBA_EXTERNAL_TABLES E
                             WHERE E.OWNER = T.OWNER
                          ) -- exclude external tables
  ORDER BY OWNER,
           TABLE_NAME
/



SY.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39526623
mishga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orcl_1989Вариант с count(*) в oracle самый медленный, лучше использовать count(1) - я предпочитаю, хотя по производительности от count(ID) и count(поле) сильно не отличается.

Между count(1) и count(*) нет разницы. Вот статья от Кайта: https://asktom.oracle.com/pls/apex/f?p=100:11:1337911574066::NO::P11_QUESTION_ID:1156159920245
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39526633
mishga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murzusЭто был пример, таблиц куча , и разница не устраивает. Вы пытаетесь помочь решить задачу организационно, но цель топика найти техническое решение. Задача если что уже решена, хотел просто узнать -может кто-то уже сталкивался и как-то ускорил.
Но пока ничего нет, кроме как считать индексы или методы типа бить таблицу и считать параллельно(мэп-редьюс).
Ну еще вариант, завести регистровую таблицу с двумя столбцами (имя таблицы, кол-во строк) и прицепить к каждой таблице а БД триггер, который при инсерте будет инкременировать, при делите декрементировать кол-во в строке рестровой таблицы для соответствующей таблицы. Тогда простой селект по регистровой таблице будет мгновенно давать результат :) Но с правами только на селект не получится, разумеется. И это изврат, имхо.
А все-таки какова была цель у этой задачи? Для чего это было нужно, если не секрет?
И каково было таинственное уникальное решение?
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39526643
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishgaНу еще вариант, завести регистровую таблицу с двумя столбцами (имя таблицы, кол-во строк) и прицепить к каждой таблице а БД триггер, который при инсерте будет инкременировать, при делите декрементировать кол-во в строке рестровой таблицы для соответствующей таблицы.Открой для себя dba_tab_modifications, велосипедостроитель.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39526644
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishgaНу еще вариант, ...


и все станут в очередь за номерком

.....
stax
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39526667
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dba_tab_modification я бы сказал неоднозначная штука. там без явного DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO она не то чтобы мгновенно обновляется.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39526685
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishgaприцепить к каждой таблице а БД триггер
Фи.
Триггер может быть тихо отключен (как явно, так и в ходе direct-операции), после чего данные в "реестре" потеряют адекватность, никому ничего не сказав.
Если уж очень хочется извратиться - слепите доменный индекс или агрегатное мат. вью.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39526708
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shtockdba_tab_modification я бы сказал неоднозначная штука. там без явного DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO она не то чтобы мгновенно обновляется.Неоднозначно то, что для минимизации дополнительных издержек надо идти на компромиссы?
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39526922
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Важно, чтобы топикстартер видел эти компромиссы
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39526968
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mishgaНу еще вариант, завести регистровую таблицу с двумя столбцами (имя таблицы, кол-во строк) и прицепить к каждой таблице а БД триггер, который при инсерте будет инкременировать, при делите декрементировать кол-во в строке рестровой таблицы для соответствующей таблицы. Тогда простой селект по регистровой таблице будет мгновенно давать результат :) Но с правами только на селект не получится, разумеется. И это изврат, имхо.
А все-таки какова была цель у этой задачи? Для чего это было нужно, если не секрет?
И каково было таинственное уникальное решение?
А все-таки какова была цель у этой задачи? - посчитать кол-во строк.
Для чего это было нужно, если не секрет? -для расчета ресурсов.
И каково было таинственное уникальное решение? - Никакого уникального, loop + execute immediate + count(*). Это долго отсюда и вопрос.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39526974
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shtockdba_tab_modification я бы сказал неоднозначная штука. там без явного DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO она не то чтобы мгновенно обновляется.
Тоже не подходит, нужно считать по факту, без затей и всяких "ловушек"
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39526990
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murzus Для чего это было нужно, если не секрет? -для расчета ресурсов.


А, извините, ресурсов чего?
Если у меня таблица из 2 ID колонок - 10 млн строк и таблица с CLOB в 10 млн строк это разные ресурсы, как по мне, хоть и ответ одинаковый 10 млн.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39526995
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXLmurzus Для чего это было нужно, если не секрет? -для расчета ресурсов.
А, извините, ресурсов чего?
Если у меня таблица из 2 ID колонок - 10 млн строк и таблица с CLOB в 10 млн строк это разные ресурсы, как по мне, хоть и ответ одинаковый 10 млн.Да ему до фонаря. Кретин задачу поставил - дебил задачу исполнил. Дальше хоть трава не расти.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527004
MaximaXXLхоть и ответ одинаковый 10 млн.Пока считается каунт, пока считаются ресурсы по результатам каунтов, пока по результатам расчетов ... что-то предпринимается, строк у же не одинаково - в одной таблице 10000001, а в другой 9999999 строк. Бегом пересчитывать!
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527013
Ломоносов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
однако за время пути собака ...Пока считается каунт, пока считаются ресурсы по результатам каунтов, пока по результатам расчетов ... что-то предпринимается, строк у же не одинаково - в одной таблице 10000001, а в другой 9999999 строк. Бегом пересчитывать!

если где-то удалилась запись, значит в какой-нибудь таблице она добавилась.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527242
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SYДа ради бога:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
SELECT  OWNER,
        TABLE_NAME,
        XMLCAST(
                XMLQUERY(
                         '/ROWSET/ROW/CNT'
                         PASSING DBMS_XMLGEN.GETXMLTYPE(
                                                        'SELECT  COUNT(*) CNT
                                                           FROM  "' || OWNER || '". "' || TABLE_NAME || '"'
                                                       )
                         RETURNING CONTENT
                        )
                AS NUMBER
               ) ROW_COUNT
  FROM  DBA_TABLES T
  WHERE OWNER = '&SCHEMA_NAME'
    AND TABLE_NAME NOT LIKE 'MLOG$\_%' ESCAPE '\' -- exclude materialized view logs
    AND NVL(IOT_TYPE,'NOT_IOT') NOT IN ('IOT_OVERFLOW','IOT_MAPPING') -- exclude IOT overflow and mapping
    AND TEMPORARY = 'N' -- exclude temporary tables
    AND SECONDARY = 'N' -- exclude Oracle Text index tables and other "non-tables"
    AND TABLE_NAME NOT IN (
                           SELECT  E.TABLE_NAME
                             FROM  DBA_EXTERNAL_TABLES E
                             WHERE E.OWNER = T.OWNER
                          ) -- exclude external tables
  ORDER BY OWNER,
           TABLE_NAME
/



SY.

SY по скорости одинаково, но уже одним select-ом . Спасибо.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527370
ora601
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousагрегатное мат. вью.

UNION ALL

C Триггерами тоже забавно. Давайте тогда уже берите Кафку и стримьте дельту в Хадуп и будет реалтайм но латенси каунт :) (Хотя некоторые ентерпрайзы и не до такого додумываются)
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527483
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murzusSYДа ради бога:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
SELECT  OWNER,
        TABLE_NAME,
        XMLCAST(
                XMLQUERY(
                         '/ROWSET/ROW/CNT'
                         PASSING DBMS_XMLGEN.GETXMLTYPE(
                                                        'SELECT  COUNT(*) CNT
                                                           FROM  "' || OWNER || '". "' || TABLE_NAME || '"'
                                                       )
                         RETURNING CONTENT
                        )
                AS NUMBER
               ) ROW_COUNT
  FROM  DBA_TABLES T
  WHERE OWNER = '&SCHEMA_NAME'
    AND TABLE_NAME NOT LIKE 'MLOG$\_%' ESCAPE '\' -- exclude materialized view logs
    AND NVL(IOT_TYPE,'NOT_IOT') NOT IN ('IOT_OVERFLOW','IOT_MAPPING') -- exclude IOT overflow and mapping
    AND TEMPORARY = 'N' -- exclude temporary tables
    AND SECONDARY = 'N' -- exclude Oracle Text index tables and other "non-tables"
    AND TABLE_NAME NOT IN (
                           SELECT  E.TABLE_NAME
                             FROM  DBA_EXTERNAL_TABLES E
                             WHERE E.OWNER = T.OWNER
                          ) -- exclude external tables
  ORDER BY OWNER,
           TABLE_NAME
/



SY.

SY по скорости одинаково, но уже одним select-ом . Спасибо.
Насчет одного селекта, вроде бы и правильно, но улыбает =)
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527517
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexFF__|murzusпропущено...


SY по скорости одинаково, но уже одним select-ом . Спасибо.
Насчет одного селекта, вроде бы и правильно, но улыбает =)

А что улыбает? Хоть что-то удалось выудить из кучи лирики и вопросов на вопрос.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527530
проходил мимо...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murzusAlexFF__|пропущено...

Насчет одного селекта, вроде бы и правильно, но улыбает =)

А что улыбает?
Тебе селект в параметрах dbms_xmlgen‘а ни на что не намекает?
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527535
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проходил мимо...murzusпропущено...


А что улыбает?
Тебе селект в параметрах dbms_xmlgen‘а ни на что не намекает?
Ну тот-же count(*) , я не понял что вызвало улыбку.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527537
проходил мимо...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murzusя не понял что вызвало улыбку.
понимание улыбающимся количества этих селектов.


murzusSY по скорости одинаково, но уже одним select-ом
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527587
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot проходил мимо...]murzusя не понял что вызвало улыбку.
понимание улыбающимся количества этих селектов.


Да понял я сколько там селектов, я тестировал на схеме с 50 таб.
Про один селект, я говорил что не нужно ПЛСКЛ анонимный блок писать с лупом
Мне вот не смешно, что один ответ из всех комментов, и то не решает.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527599
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__|murzusпропущено...


SY по скорости одинаково, но уже одним select-ом . Спасибо.
Насчет одного селекта, вроде бы и правильно, но улыбает =)

и правильно улыбнуло
к-во будет посчитано не на момент старта селекта, а когда доберется до нужной таблицы
если грубо то результат будет не согласован

.....
stax
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527635
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
StaxAlexFF__|пропущено...

Насчет одного селекта, вроде бы и правильно, но улыбает =)

и правильно улыбнуло
к-во будет посчитано не на момент старта селекта, а когда доберется до нужной таблицы
если грубо то результат будет не согласован

.....
stax
Откуда у вас информация что не будет согласован? Кто вообще сказал что там будут меняться данные?
Давайте абстрагируемся - пусть БД будет вообще простаивающая.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527652
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murzusОткуда у вас информация что не будет согласован? Кто вообще сказал что там будут меняться данные?
Давайте абстрагируемся - пусть БД будет вообще простаивающая.

мож я неправильно выразился

под несогласованностью я я имелл ввиду,
что если за время со старта и до начала count(*) конкретной таблички к-во строк в ней (табличке) поменяется (с коммит) то ето будет учтено

count(*) будет посчитан на момент старта SELECT COUNT(*) CNT ..., а не на момент SELECT OWNER, ...

конечно если "БД будет вообще простаивающая" то получим согласованный результат

......
stax
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527677
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
конечно если "БД будет вообще простаивающая" то получим согласованный результат

......
stax

Получим стечение обстоятельств, такое же как и X залилось X удалилось.


murzus А что улыбает? Хоть что-то удалось выудить из кучи лирики и вопросов на вопрос.


Я бы сказал по другому, люди хотели понять зачем чтоб предложить решение.
Похоже на одно "молодое дарование" которое доказывало мне что SQL убогий язык потому что не может суммировать 2 поля типа Date.
А на вопрос: А зачем их суммировать? В чем смысл?
Говорил: -Ну я так хочу, а он не может.

Посему я думаю что многие хотели Вам помочь, предложить оптимальное решение, но не могли понять для чего это надо ...
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527695
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXL,

А ты не молодое дарование?
По впечатлением примерно в прошлом году закончил универ.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527699
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

А чем, извините, навеяно такое впечатление?
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527716
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXL,

судя по стилю
судя по желанию помогать всем немощным, не способным польвоваться поиском, и писать тривиальные запросы тыщу раз написанные
судя по тому, что есть определенные способности, но техника еще не отшлифована
и проч

Я могу ошибаться.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527773
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dbms_photoshopMaximaXXL,

судя по стилю
судя по желанию помогать всем немощным, не способным польвоваться поиском, и писать тривиальные запросы тыщу раз написанные
судя по тому, что есть определенные способности, но техника еще не отшлифована
и проч

Я могу ошибаться.

Можно сразу было указать немощному вариант (иди в поиск, или учись писать запросы)? Зачем засорять эфир и тратить время?
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527793
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murzusМожно сразу было указать немощному вариант (иди в поиск, или учись писать запросы)? Зачем засорять эфир и тратить время?Я стараюсь не отвечать, если пациент необучаем, но иногда таки влезаю в топик, как сделал в этом случае. Каюсь.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527812
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dbms_photoshopmurzusМожно сразу было указать немощному вариант (иди в поиск, или учись писать запросы)? Зачем засорять эфир и тратить время?Я стараюсь не отвечать, если пациент необучаем, но иногда таки влезаю в топик, как сделал в этом случае. Каюсь.
И как вы определяете, что пациент не обучаем?
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527829
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murzusdbms_photoshopпропущено...
Я стараюсь не отвечать, если пациент необучаем, но иногда таки влезаю в топик, как сделал в этом случае. Каюсь.
И как вы определяете, что пациент не обучаем?Я думаю мыслящий человек способен был бы в гугле написать хотя бы oracle count from,
потом походить по ссылкам и понять что все уже обсуждено тыщу раз.

При наличии минимального мышления человек мог бы упростить задачу. Есть текстовый файл, можно ли посчитать число пробелов (или ,например, переносов строк) не читая весь файл. Ответ был бы - можно если один раз это число сохранить во вспомогательной структуре и потом поддерживать при изменениях в файле.

Ну и так далее, если вопрос примитивен, тыщу раз обсуждаля и легко гуглится, то ТС скорее всего необучаем.
С другой стороны понятно что всегда будут утверждающие что count(*) быстрее count(1) или наоборот.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527843
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXLStaxконечно если "БД будет вообще простаивающая" то получим согласованный результат

......
stax

Получим стечение обстоятельств, такое же как и X залилось X удалилось.


murzus А что улыбает? Хоть что-то удалось выудить из кучи лирики и вопросов на вопрос.


Я бы сказал по другому, люди хотели понять зачем чтоб предложить решение.
Похоже на одно "молодое дарование" которое доказывало мне что SQL убогий язык потому что не может суммировать 2 поля типа Date.
А на вопрос: А зачем их суммировать? В чем смысл?
Говорил: -Ну я так хочу, а он не может.

Посему я думаю что многие хотели Вам помочь, предложить оптимальное решение, но не могли понять для чего это надо ...

Вы вероятно лучше поняли суть вопроса, чем дбмс_фотошоп, но все равно не до конца.
Это нужно просто для того чтобы быстрее считать реальное количество строк в таблицах чем count(*) from table. Не знаю как еще проще объяснить.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527853
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murzusЭто нужно просто для того чтобы быстрее считать реальное количество строк в таблицах чем count(*) from table. Не знаю как еще проще объяснить.Подсчёт ради подсчета - это и есть необучаемость.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527870
murzus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicmurzusЭто нужно просто для того чтобы быстрее считать реальное количество строк в таблицах чем count(*) from table. Не знаю как еще проще объяснить.Подсчёт ради подсчета - это и есть необучаемость.

Профит во времени на больших базах.
Переформулирую вопрос: нужно запрос который отработает быстрее чем select count(*) from table , и тоже вернет количество строк в таб.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527876
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murzusПрофит во времени на больших базах.
Переформулирую вопрос: нужно запрос который отработает быстрее чем select count(*) from table , и тоже вернет количество строк в таб.Что в лоб что по лбу: зацикленность на неправильно выбранном способе решения какой-то непонятной задачи да и ещё с претензией на всеобщность "задачи".
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39527908
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
murzus,

будет здорово если укажете в своем резюме: считал количество строк во всех таблицах базы данных.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39528114
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murzusнужно запрос который отработает быстрее чем select count(*) from table
Актуальную статистику и num_rows в dba_tables не предлагать.

В чистом виде:
- Штурман, приборы!
- 42!
- Что 42?
- А что приборы?

Что уж там мелочиться-то, обвешайте всю базу триггерами на after insert/delete on each row и truncate. Пусть каждый чих записывает +/- 1 или "признак сброса данных" в одну е#$эпическую таблицу.

Потом практически одним sum() group by получите свой результат.

Сударь, раскройте же уже общественности смысл этого "точного" подсчёта звёзд на небе и песчинок в океане!
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39528119
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishgaНу еще вариант, завести регистровую таблицу с двумя столбцами (имя таблицы, кол-во строк) и прицепить к каждой таблице а БД триггер
Хм, уже предлагали.
Не заметил при прошлом прочтении топика.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39528362
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envmishgaНу еще вариант, завести регистровую таблицу с двумя столбцами (имя таблицы, кол-во строк) и прицепить к каждой таблице а БД триггер
Хм, уже предлагали.
Не заметил при прошлом прочтении топика.

Ну да, наплевать что INSERT/DELETE в любую таблицу будет сериализирован. Наплевать что deadlock пойдет. Зато count будет быстрый .

SY.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39528371
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYНу да, наплевать что INSERT/DELETE в любую таблицу будет сериализирован. Наплевать что deadlock пойдет. Зато count будет быстрый .Соломон, складывается впечатление, что ты ржёшь не над потугами ТС.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39528406
Задорнов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicСоломон, складывается впечатление, что ты ржёшь не над потугами ТС.У Соломона американский менталитет, он русский юмор не всегда понимает.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39528466
Параноик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь, когда murzus пишет count(*), у него дергается глаз.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39528548
mishga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYНу да, наплевать что INSERT/DELETE в любую таблицу будет сериализирован. Наплевать что deadlock пойдет. Зато count будет быстрый .

SY.

Поясните, плиз.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39528675
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishgaПоясните, плиз.

А что тут пояснять? Что будет если две сессии хотят обновить ту-же строку? Первая обновляет а вот вторая ждет пока первая не соизволит commit/rollback - вот и сериализация. A теперь первая обновляет строку X а вторая Y. Затем первая пытается обновить строку Y а вторая X получaeм deadlock.

SY.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39528740
уточнятор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SYту-же строку?глядя со стороны приложения - ту же таблицу.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39528802
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уточняторSYту-же строку?глядя со стороны приложения - ту же таблицу.


А зря в корень - сериализация/deadlock произойдет из-за попытки обновить ту-же строку в "регистровой таблице". А вызвано это будет тригером другой таблицы или напрямую это детали.

SY.
...
Рейтинг: 0 / 0
Как ускорить select count(*) from table
    #39532350
mishga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY,

Я бы сказал, что с триггерами и регистровой таблицей дедлок будет более вероятен, чем без них. Но не обязателен. Зависит от характера транзакций.
...
Рейтинг: 0 / 0
107 сообщений из 107, показаны все 5 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как ускорить select count(*) from table
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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