|
|
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Запрос с испрльзованием алиасов таблиц выдает результат 32 строки а без испрльзования алиасов 64????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2003, 10:12 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
первый CREATE OR REPLACE VIEW FIS.REGORAR ( NAME_MTL, ENRICH_DESCR, PRG_OID, MTL_KIND_OID, PHYS_FORM_OID, CHEM_FORM_OID, IRRAD_PUR_OID, FULL_NM, END_PRD_DT, SUM_ELEM_MASS, ELEM_UNIT ) AS SELECT n.name_mtl, nc.enrich_descr, prg.oid, batch.mtl_kind_oid, batch.phys_form_oid, batch.chem_form_oid, batch.irrad_pur_oid, org.full_nm, prd.end_prd_dt, sum(mtl.elem_mass) sum_elem_mass, typ.elem_unit from org, mba, 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 mba.oid = inv.mba_oid and org.oid = (select org_oid from mba where oid = inv.mba_oid) 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, nc.enrich_descr, batch.mtl_kind_oid, batch.phys_form_oid, batch.chem_form_oid, batch.irrad_pur_oid, org.full_nm, prd.end_prd_dt, typ.elem_unit Второй CREATE OR REPLACE VIEW fis.regorar ( name_mtl, enrich_descr, prg_oid, mtl_kind_oid, phys_form_oid, chem_form_oid, irrad_pur_oid, full_nm, end_prd_dt, sum_elem_mass, elem_unit ) AS SELECT n.name_mtl, nc.enrich_descr, prg.OID, batch.mtl_kind_oid, batch.phys_form_oid, batch.chem_form_oid, batch.irrad_pur_oid, org.full_nm, prd.end_prd_dt, SUM (mtl.elem_mass) sum_elem_mass, typ.elem_unit FROM fis.cd_prg prg, fis.ac_batch batch, fis.inv, fis.mba, fis.ac_mtl mtl, fis.mtl_typ typ, fis.prd, fis.nomen_cmpo nc, fis.nomen n, fis.org WHERE fis.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 mba.OID = inv.mba_oid AND org.OID = (SELECT org_oid FROM fis.mba WHERE OID = inv.mba_oid) AND inv.prd_oid = prd.OID AND EXISTS (SELECT 1 FROM fis.prd WHERE TO_CHAR (prd.end_prd_dt, 'DD.MM') = '31.12' AND prd.OID = inv.prd_oid) 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 GROUP BY prg.OID, n.name_mtl, nc.enrich_descr, batch.mtl_kind_oid, batch.phys_form_oid, batch.chem_form_oid, batch.irrad_pur_oid, org.full_nm, prd.end_prd_dt, typ.elem_unit; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2003, 10:38 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Что-то мне вот эти кусочки не нравятся: (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) и 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2003, 11:50 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Ошибка была в другом месте. Оба этих запроса одинаковй но второй работает в 3 раза быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2003, 16:29 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Почему второй запрос работает намного быстрее чем первый и временного табличного пространства ест совсем мало????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2003, 13:22 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Ну как тебе сказать... Я бы и сам про оптимизацию лекцию бы послушал. select ... from ... nomen_cmpo nc ... (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) Зачем два раза nomen_cmpo смотреть? Плюс к этому exists работает по другой идеалогии нежели in ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2003, 13:42 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32090256&tid=1992205]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 368ms |

| 0 / 0 |
