D
Desir
привет всем.
Возникла трудность: необходимо посчитать трудоемкость запроса (записал, но получился довольно сложный с точки зрения трудоемкости).
Появилась куча разных идей.
ВОт сам запрос:
/*------------------------------------------------------------------*/
[sql]SELECT distinct sa.NAME
FROM SHEFF_ABIT sa,
(
SELECT ae.id_abit, ef.Id_fac, count(ef.ID_exz)
FROM sheff_abit_exz ae,
sheff_exz_fac ef,
sheff_fac_abit fa
WHERE ae.OCENKA > 2 and fa.ID_fac = ef.ID_FAC and ef.ID_EXZ = ae.ID_EXZ and ae.id_abit = fa.id_abit
GROUP BY ef.id_fac, ae.id_abit)
tableGroup,
(
select max(zayav.kol) as maxkol
from ( select id_abit, count(*) as kol
from Sheff_fac_abit group by id_abit) zayav)MK,
(select id_abit as IDA, count(*) as kol
from Sheff_fac_abit group by id_abit) zayav
WHERE zayav.kol = MK.maxkol and zayav.IDA = sa.ID and zayav.IDA = tableGroup.Id_abit
/*------------------------------------------------------*/[/sql]
меня в данном случае больше интересует трудоемкость вот этого куска кода:
[sql]/*------------------------------------------------------*/
SELECT ae.id_abit, ef.Id_fac, count(ef.ID_exz)
FROM sheff_abit_exz ae,
sheff_exz_fac ef,
sheff_fac_abit fa
WHERE ae.OCENKA > 2 and fa.ID_fac = ef.ID_FAC and ef.ID_EXZ = ae.ID_EXZ and ae.id_abit = fa.id_abit
GROUP BY ef.id_fac, ae.id_abit
/*------------------------------------------------------*/[/sql]
По моим подсчетам трудоемкость будет выражена формулой:
Tmax = Θ( n2 m2 p2 Ln(np) Ln(mp))
Tmin = Θ(n2 m p Ln(mp) )
Минимальная и Максимальная трудоемкость, двойки это квадраты чисел. n m p - размеры таблиц главных.
Структура таблиц: 3 главные и 3 связующие. каждая с каждой.
Правильно ли я посчитал запрос? и если не трудно какой будет результирующий?
Заранее спасибо
Возникла трудность: необходимо посчитать трудоемкость запроса (записал, но получился довольно сложный с точки зрения трудоемкости).
Появилась куча разных идей.
ВОт сам запрос:
/*------------------------------------------------------------------*/
[sql]SELECT distinct sa.NAME
FROM SHEFF_ABIT sa,
(
SELECT ae.id_abit, ef.Id_fac, count(ef.ID_exz)
FROM sheff_abit_exz ae,
sheff_exz_fac ef,
sheff_fac_abit fa
WHERE ae.OCENKA > 2 and fa.ID_fac = ef.ID_FAC and ef.ID_EXZ = ae.ID_EXZ and ae.id_abit = fa.id_abit
GROUP BY ef.id_fac, ae.id_abit)
tableGroup,
(
select max(zayav.kol) as maxkol
from ( select id_abit, count(*) as kol
from Sheff_fac_abit group by id_abit) zayav)MK,
(select id_abit as IDA, count(*) as kol
from Sheff_fac_abit group by id_abit) zayav
WHERE zayav.kol = MK.maxkol and zayav.IDA = sa.ID and zayav.IDA = tableGroup.Id_abit
/*------------------------------------------------------*/[/sql]
меня в данном случае больше интересует трудоемкость вот этого куска кода:
[sql]/*------------------------------------------------------*/
SELECT ae.id_abit, ef.Id_fac, count(ef.ID_exz)
FROM sheff_abit_exz ae,
sheff_exz_fac ef,
sheff_fac_abit fa
WHERE ae.OCENKA > 2 and fa.ID_fac = ef.ID_FAC and ef.ID_EXZ = ae.ID_EXZ and ae.id_abit = fa.id_abit
GROUP BY ef.id_fac, ae.id_abit
/*------------------------------------------------------*/[/sql]
По моим подсчетам трудоемкость будет выражена формулой:
Tmax = Θ( n2 m2 p2 Ln(np) Ln(mp))
Tmin = Θ(n2 m p Ln(mp) )
Минимальная и Максимальная трудоемкость, двойки это квадраты чисел. n m p - размеры таблиц главных.
Структура таблиц: 3 главные и 3 связующие. каждая с каждой.
Правильно ли я посчитал запрос? и если не трудно какой будет результирующий?
Заранее спасибо