|
|
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
подстрекательorcl_1989Вариант с count(*) в oracle самый медленный, лучше использовать count(1) - я предпочитаю, хотя по производительности от count(ID) и count(поле) сильно не отличается. Где все? Elic? Фотошоп? Анонимус? count(поле) результат от */0 может отличатся, да и производительность тоже ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 11:44 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
Stax, a count(*) от count(1)? Не поленись, проведи говноработу как обычно. И приложи сравнение. Защитник ты наш. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 11:46 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
Stax, Хотел узнать все варианты для ридонли . create fbi по всем таблицам требует прав и лишних ресурсов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 11:47 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
murzusFogelРК зачем городить? Можно обойтись rowid Так,так... А можно подробнее? пример реализации идеи (среды нет под рукой, пишу в блокноте из горящего танка ): Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. Если таблицы от десятков миллионов строк и больше, набор в курсоре делите ещё на партиции/субпартиции - несмотря на увеличение кол-ва операций суммарно будет быстрее. как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 11:53 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
подстрекательorcl_1989Вариант с count(*) в oracle самый медленный, лучше использовать count(1) - я предпочитаю, хотя по производительности от count(ID) и count(поле) сильно не отличается. Где все? Elic? Фотошоп? Анонимус?Очень тухлый вброс. Нет огонька. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 11:54 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, извини. Я должен лучше вбрасывать. Попробую в другой теме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 11:56 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
подстрекатель, Речь не про тебя, а про ТС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 12:10 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. конечно, это будет незнамо_что, враки, но каков вопрос.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 12:16 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
orawishконечно, это будет незнамо_что, враки, но каков вопрос..Уверен, что дочитал его до конца?murzusВариант с num_rows from dba_tables , не подходит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 12:18 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
stax..Stax, a count(*) от count(1)? Не поленись, проведи говноработу как обычно. И приложи сравнение. Защитник ты наш. кого защитник? почему Ваш? зачем мне сравнение, я пользую * ps неужели Вам так принципиально постить под ником stax..? .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 12:24 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
Elic..Уверен, что дочитал его до конца?.. и действительно, упс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 12:25 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
а на какой момент времени сабж? Где консистентность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 13:22 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
Fogel Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. Неверно. Если в БД меняется количество строк то результат не будет соответствовать ни одному состоянию БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 13:26 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
XMLerFogel Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. Неверно. Если в БД меняется количество строк то результат не будет соответствовать ни одному состоянию БД. можно в начало блока добавить дату для фиксации и считать всё на scn по ней. так будет кол-во на определённый момент времени. ТС именно это вроде и хотел. я описал идею, а подробности уже зависят от конкретики требований и рабочей среды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 13:33 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
XMLerНеверно. Если в БД меняется количество строк то результат не будет соответствовать ни одному состоянию БД.Положи руку на сердце и скажи, какая нахрен разница, что бессмысленная цифра имеет точность плюс-минус лапоть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 13:51 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
XMLerFogel Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. Неверно. Если в БД меняется количество строк то результат не будет соответствовать ни одному состоянию БД. перед пересчетом set read only (ето если не одним запросом) ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 14:03 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
Fogelmurzusпропущено... Так,так... А можно подробнее? пример реализации идеи (среды нет под рукой, пишу в блокноте из горящего танка ): Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. Если таблицы от десятков миллионов строк и больше, набор в курсоре делите ещё на партиции/субпартиции - несмотря на увеличение кол-ва операций суммарно будет быстрее. как-то так. Т.е. хотите сказать, что "select count(rowid) from t "быстрее чем "select count(*) from t?" Так разве не тоже самое будет?: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 18:42 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
murzus Т.е. хотите сказать, что "select count(rowid) from t "быстрее чем "select count(*) from t?" Так разве не тоже самое будет?: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. я "сказал", что PK для данной задачи городить незачем, когда есть rowid "то же самое" или не "то же самое" - сверьте сами, если интересно. моё личное мнение: на ооооооооооооочень больших наборах данных (в том числе в объёме учитывается и как хранятся типы данных: 5 колонок number все равно меньше одной колонки varchar2) rowid выигрывает, на небольших наборах, если тип данных занимает мало место для хранения, то * выиграет из-за отсутствия накладных расходов на получение rowid ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 20:11 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
Fogelкогда есть rowidну, а если его нет? Fogelнакладных расходов на получение rowidрасходы можно и не накладывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 21:18 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
Fogelя "сказал", что PK для данной задачи городить незачем, когда есть rowid "то же самое" или не "то же самое" - сверьте сами, если интересно. моё личное мнение: на ооооооооооооочень больших наборах данных (в том числе в объёме учитывается и как хранятся типы данных: 5 колонок number все равно меньше одной колонки varchar2) rowid выигрывает, на небольших наборах, если тип данных занимает мало место для хранения, то * выиграет из-за отсутствия накладных расходов на получение rowid Вы просто не поняли, зачем PK. Индекс обычно значительно меньше, чем таблица, поэтому его целиком будет прочитать быстрее. С rowid это не прокатит. Звезда в каунте не расшифровывается до списка столбцов, как минимум, когда есть индекс по not null полю - это легко проверить посмотрев на план запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2017, 09:26 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
ElicXMLerНеверно. Если в БД меняется количество строк то результат не будет соответствовать ни одному состоянию БД.Положи руку на сердце и скажи, какая нахрен разница, что бессмысленная цифра имеет точность плюс-минус лапоть?может, у них на это SLA заточен, и всякие EditDA количество созданных строк в день ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2017, 14:12 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
Боюсь сама конструкция count(*) не оптимальна, правильнее выбрать некое поле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2017, 10:06 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
euproБоюсь сама конструкция count(*) не оптимальна, правильнее выбрать некое поле.select поле from таблица и подсчитывать количество строк на калькуляторе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2017, 12:51 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
Да что ж такое, сколько уже можно поддерживать древние ошибочные мифы! Нет никакого смысла заменять 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/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2017, 14:43 |
|
||
|
Как ускорить select count(*) from table
|
|||
|---|---|---|---|
|
#18+
ElicXMLerНеверно. Если в БД меняется количество строк то результат не будет соответствовать ни одному состоянию БД.Положи руку на сердце и скажи, какая нахрен разница, что бессмысленная цифра имеет точность плюс-минус лапоть? Никакой. Окажись я на месте ТСа ответил бы 4378823478969123469. Пусть проверяют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2017, 10:36 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39525637&tid=1885148]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
168ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 235ms |
| total: | 507ms |

| 0 / 0 |
