|
|
|
Медленно работает запрос
|
|||
|---|---|---|---|
|
#18+
Запрос на выборку и сортировку данных работает медленно. В init файле есть параметры SORT_AREA_RETAINED_SIZE и SORT_AREA_SIZE. Если их размер увеличить будет ли запрос работать быстрее??? И какие их размеры надо устанавливать???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2003, 14:27 |
|
||
|
Медленно работает запрос
|
|||
|---|---|---|---|
|
#18+
Может, и будет. Запрос, структуру таблиц и данные - в студию. Текущее значение этих параметров - туда же. Analyze давно делался? Индексы все на месте? Медленно работает только с сортировкой или и без неё тоже медленно?\r \r Я, кстати, тут ссылочку на статейку по теме кидал вчера, почитай - /topic/19735 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2003, 14:32 |
|
||
|
Медленно работает запрос
|
|||
|---|---|---|---|
|
#18+
Ссылка не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2003, 15:31 |
|
||
|
Медленно работает запрос
|
|||
|---|---|---|---|
|
#18+
А у меня работает. Еще раз - http://www.orapub.com/cgi/genesis.cgi?p1=sub&p2=abs145 Статья "Cost-Based Optimizer Problems and Solutions" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2003, 15:50 |
|
||
|
Медленно работает запрос
|
|||
|---|---|---|---|
|
#18+
Если меняю в запросе where (batch.mtl_kind_oid, batch.phys_form_oid, batch.chem_form_oid, batch.irrad_pur_oid) in (select nc.mtl_kind_oid, nc.phys_form_oid, nc.chem_form_oid, nc.irrad_pur_oid from nomen_cmpo) на AND nc.mtl_kind_oid = batch.mtl_kind_oid AND nc.phys_form_oid = batch.phys_form_oid AND nc.chem_form_oid = batch.chem_form_oid AND nc.irrad_pur_oid = batch.irrad_pur_oid то но работаетна много быстрее. Почему???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2003, 16:18 |
|
||
|
Медленно работает запрос
|
|||
|---|---|---|---|
|
#18+
Поддерживаю Scott Tiger: Запрос, структуру таблиц и данные - в студию. Текущее значение этих параметров - туда же. Analyze давно делался? Индексы все на месте? Медленно работает только с сортировкой или и без неё тоже медленно? Кстати и индексы тудаже! Или эта информация секретна? (если так, то можно дать лишь общие рекомендации) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2003, 19:59 |
|
||
|
Медленно работает запрос
|
|||
|---|---|---|---|
|
#18+
2Gooddy: потому что конструкции типа <query> where smth in|not in <subquery> работают по жизни медленно. Пользуйся exists|not exists. В качестве домашнего задания - показать, почему так происходит, это не сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 12:15 |
|
||
|
Медленно работает запрос
|
|||
|---|---|---|---|
|
#18+
Вот оба запроса SELECT n.name_mtl, n.enrich_descr, n.sort_id, nc.enrich_descr, prg.OID, batch.mtl_kind_oid, batch.phys_form_oid, batch.chem_form_oid, batch.irrad_pur_oid, prd.end_prd_dt, SUM ( DECODE ( typ.elem_unit, 'кг', mtl.elem_mass, 'г', mtl.elem_mass * 0.001 ) ) sum_elem_mass, DECODE ( typ.elem_unit, 'кг', 'кг', 'г', 'кг' ) elem_unit FROM nomen n, nomen_cmpo nc, cd_prg prg, ac_batch batch, ac_mtl mtl, mtl_typ typ, prd, inv WHERE batch.mtl_kind_oid = nc.mtl_kind_oid AND batch.phys_form_oid = nc.phys_form_oid AND batch.chem_form_oid = nc.chem_form_oid AND batch.irrad_pur_oid = nc.irrad_pur_oid AND check_pct ( batch.enrichmnt, nc.down_sign, nc.up_sign, nc.down_pct, nc.up_pct ) IS NULL AND nc.nomen_oid = n.OID AND batch.cd_prg_oid = prg.OID AND mtl.ac_batch_oid = batch.OID AND mtl.mtl_typ_oid = typ.OID AND batch.inv_oid = inv.OID AND inv.mba_oid IN (SELECT OID FROM mba WHERE code = 'ОЗО') AND inv.prd_oid = prd.OID AND inv.prd_oid IN (SELECT prd.OID FROM prd WHERE TO_CHAR (prd.end_prd_dt, 'DD.MM') = '31.12') GROUP BY prg.OID, n.name_mtl, n.enrich_descr, n.sort_id, nc.enrich_descr, batch.mtl_kind_oid, batch.phys_form_oid, batch.chem_form_oid, batch.irrad_pur_oid, prd.end_prd_dt, typ.elem_unit; SELECT n.name_mtl, n.enrich_descr, n.sort_id, nc.enrich_descr, prg.OID, batch.mtl_kind_oid, batch.phys_form_oid, batch.chem_form_oid, batch.irrad_pur_oid, prd.end_prd_dt, SUM ( DECODE ( typ.elem_unit, 'кг', mtl.elem_mass, 'г', mtl.elem_mass * 0.001 ) ) sum_elem_mass, DECODE ( typ.elem_unit, 'кг', 'кг', 'г', 'кг' ) elem_unit FROM nomen n, nomen_cmpo nc, cd_prg prg, ac_batch batch, ac_mtl mtl, mtl_typ typ, prd, inv WHERE batch.mtl_kind_oid = nc.mtl_kind_oid AND batch.phys_form_oid = nc.phys_form_oid AND batch.chem_form_oid = nc.chem_form_oid AND batch.irrad_pur_oid = nc.irrad_pur_oid AND check_pct ( batch.enrichmnt, nc.down_sign, nc.up_sign, nc.down_pct, nc.up_pct ) IS NULL AND nc.nomen_oid = n.OID AND batch.cd_prg_oid = prg.OID AND mtl.ac_batch_oid = batch.OID AND mtl.mtl_typ_oid = typ.OID AND batch.inv_oid = inv.OID AND inv.mba_oid IN (SELECT OID FROM mba WHERE code = 'ОЗО') AND inv.prd_oid = prd.OID AND inv.prd_oid IN (SELECT prd.OID FROM prd WHERE TO_CHAR (prd.end_prd_dt, 'DD.MM') = '31.12') GROUP BY prg.OID, n.name_mtl, n.enrich_descr, n.sort_id, nc.enrich_descr, batch.mtl_kind_oid, batch.phys_form_oid, batch.chem_form_oid, batch.irrad_pur_oid, prd.end_prd_dt, typ.elem_unit; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2003, 15:39 |
|
||
|
Медленно работает запрос
|
|||
|---|---|---|---|
|
#18+
Ошибся второй SELECT n.name_mtl, n.enrich_descr,n.sort_id, nc.enrich_descr, prg.oid, batch.mtl_kind_oid, batch.phys_form_oid, batch.chem_form_oid, batch.irrad_pur_oid, prd.end_prd_dt, sum(DECODE(typ.elem_unit, 'кг', mtl.elem_mass, 'г', mtl.elem_mass*0.001)) sum_elem_mass, DECODE(typ.elem_unit, 'кг','кг', 'г','кг') elem_unit FROM nomen n, nomen_cmpo nc, cd_prg prg, ac_batch batch, ac_mtl mtl, mtl_typ typ, prd, inv WHERE (batch.mtl_kind_oid, batch.phys_form_oid, batch.chem_form_oid, batch.irrad_pur_oid) in (SELECT nc.mtl_kind_oid, nc.phys_form_oid, nc.chem_form_oid, nc.irrad_pur_oid FROM nomen_cmpo) AND check_pct(batch.enrichmnt, nc.down_sign, nc.up_sign, nc.down_pct, nc.up_pct) IS NULL AND nc.nomen_oid = n.oid AND batch.cd_prg_oid = prg.oid AND mtl.ac_batch_oid = batch.oid AND mtl.mtl_typ_oid = typ.oid AND batch.inv_oid = inv.oid AND inv.mba_oid in (SELECT oid FROM mba WHERE code = 'ОЗО') AND inv.prd_oid = prd.oid AND inv.prd_oid in (SELECT prd.oid FROM prd WHERE to_char(prd.end_prd_dt,'DD.MM') = '31.12') GROUP BY prg.oid, n.name_mtl, n.enrich_descr, n.sort_id, nc.enrich_descr, batch.mtl_kind_oid, batch.phys_form_oid, batch.chem_form_oid, batch.irrad_pur_oid, prd.end_prd_dt, typ.elem_unit; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2003, 15:43 |
|
||
|
Медленно работает запрос
|
|||
|---|---|---|---|
|
#18+
А такие банальности (что оптимизатор порой после Analyze не делает) типа: под FROM расположить по возрастанию объема, самая связывающая таблица справа от "=", наиболее ограничивающее условие в конце Where, ...? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2003, 15:57 |
|
||
|
Медленно работает запрос
|
|||
|---|---|---|---|
|
#18+
Дополнение к Alexandr Plus: 1) check_pct(...) IS NULL переделать функцию, так, чтобы она возвращала например 0/1 (в условиях , везде где можно НЕ использовать "is NULL") 2) две связки AND x IN (select inv.x FROM mba ...) Как заметил Alexandr Plus переделать на AND exists (select ...) AND x IN (select inv.y FROM prd ...) Таблицы(/view) mba и prd связаны в основном условии FROM ....prd,inv WHERE ... => Эту конструкцию можно переделать на обычный AND t1.c1 = t2.c2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2003, 17:30 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32088933&tid=1992116]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
17ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 340ms |

| 0 / 0 |
