powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрос
7 сообщений из 7, страница 1 из 1
Запрос
    #32089382
Фотография Gooddy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос с испрльзованием алиасов таблиц выдает результат 32 строки а без испрльзования алиасов 64?????
...
Рейтинг: 0 / 0
Запрос
    #32089386
Allexx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну и где оба запроса?
...
Рейтинг: 0 / 0
Запрос
    #32089404
Фотография Gooddy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первый

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;
...
Рейтинг: 0 / 0
Запрос
    #32089466
Allexx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то мне вот эти кусочки не нравятся:

(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
...
Рейтинг: 0 / 0
Запрос
    #32089745
Фотография Gooddy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка была в другом месте. Оба этих запроса одинаковй но второй работает в 3 раза быстрее.
...
Рейтинг: 0 / 0
Запрос
    #32090231
Фотография Gooddy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему второй запрос работает намного быстрее чем первый и временного табличного пространства ест совсем мало?????
...
Рейтинг: 0 / 0
Запрос
    #32090256
Allexx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну как тебе сказать...
Я бы и сам про оптимизацию лекцию бы послушал.

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
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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