uce/消除上下文切换造成的任何开销?据我所知,用户定义的聚合函数可能是最好的来源。只要您不在函数本身中使用SQL,它似乎也可以避免上下文切换问题,但我仍然没有找到明确的答案。只要您不进行导致代码中出现上下文切换的调用。但是,对于复杂的统计函数,调用这些函
uce/消除上下文切换造成的任何开销?据我所知,用户定义的聚合函数可能是最好的来源。只要您不在函数本身中使用SQL,它似乎也可以避免上下文切换问题,但我仍然没有找到明确的答案。只要您不进行导致代码中出现上下文切换的调用。但是,对于复杂的统计函数,调用这些函,sql,oracle,plsql,Sql,Oracle,Plsql,uce/消除上下文切换造成的任何开销?据我所知,用户定义的聚合函数可能是最好的来源。只要您不在函数本身中使用SQL,它似乎也可以避免上下文切换问题,但我仍然没有找到明确的答案。只要您不进行导致代码中出现上下文切换的调用。但是,对于复杂的统计函数,调用这些函数可能是有益的。例如,将计算传递到开源统计环境R。 PARENT( ID NUMBER, NAME VA
uce/消除上下文切换造成的任何开销?据我所知,用户定义的聚合函数可能是最好的来源。只要您不在函数本身中使用SQL,它似乎也可以避免上下文切换问题,但我仍然没有找到明确的答案。只要您不进行导致代码中出现上下文切换的调用。但是,对于复杂的统计函数,调用这些函数可能是有益的。例如,将计算传递到开源统计环境R。
PARENT(
ID NUMBER,
NAME VARCHAR(20),
NUMBER_OF_CHILDREN NUMBER,
AVERAGE_CHILD_AGE NUMBER,
OLDEST_CHILD_AGE NUMBER,
YOUNGEST_CHILD_AGE NUMBER,
MODE_EYE_COLOR VARCHAR(20),
EVERY_CHILD_MADE_A VARCHAR(1),
BLOODTYPES_THAT_CAN_BE_ACCEPTED VARCHAR(100),
SOMETHING_COMPLEX COMPLEX_OBJECT_1
)
CHILD(
ID NUMBER,
PARENT_ID NUMBER,
AGE NUMBER,
EYE_COLOR VARCHAR(20),
MADE_AN_A VARCHAR(1),
BLOODTYPE VARCHAR(5),
COMPLEXITY COMPLEX_OBJECT_2
)
PROCEDURE UPDATE_PARENT_1 (PARENT_ID IN NUMBER)
BEGIN
UPDATE PARENT
SET
NUMBER_OF_CHILDREN = CHILD_COUNT_FUNCTION(PARENT_ID),
AVERAGE_CHILD_AGE = CHILD_AGE_AVERAGE_FUNCTION(PARENT_ID),
OLDER_CHILD_AGE = PICK_OLDEST_AGE_FUNCTION(PARENT_ID),
YOUNGEST_CHILD_AGE = PICK_YOUNGEST_AGE_FUNCTION(PARENT_ID),
MODE_EYE_COLOR = MOST_OFTEN_EYE_COLOR_FUNCTION(PARENT_ID),
BLOODTYPES_THAT_CAN_BE_ACCEPTED = DETERMINE_BLOOD_DONOR_TYPES(PARENT_ID),
SOMETHING_COMPLEX = COMPLEX_FUNCTION(PARENT_ID)
WHERE
ID = PARENT_ID;
END;
PROCEDURE UPDATE_PARENT_2 (PARENT_ID IN NUMBER)
CURSOR C IS SELECT * FROM CHILD WHERE CHILD.PARENT_ID = PARENT_ID
BEGIN
OPEN C;
UPDATE PARENT
SET
NUMBER_OF_CHILDREN = CHILD_COUNT_FUNCTION(C),
AVERAGE_CHILD_AGE = CHILD_AGE_AVERAGE_FUNCTION(C),
OLDER_CHILD_AGE = PICK_OLDEST_AGE_FUNCTION(C),
YOUNGEST_CHILD_AGE = PICK_YOUNGEST_AGE_FUNCTION(C),
MODE_EYE_COLOR = MOST_OFTEN_EYE_COLOR_FUNCTION(C)
BLOODTYPES_THAT_CAN_BE_ACCEPTED = DETERMINE_BLOOD_DONOR_TYPES(C),
SOMETHING_COMPLEX = COMPLEX_FUNCTION(C)
WHERE
ID = PARENT_ID;
CLOSE C;
END;
UPDATE Parent
SET (Number_Of_Children, Average_Child_Age, Oldest_Child_Age, Youngest_Child_Age) = (
SELECT COUNT(*), AVG(Age), MAX(Age), MIN(Age)
FROM Child
WHERE Parent.ID = Child.Parent_ID
)
UPDATE Parent
SET (Number_Of_Children, Average_Child_Age, Oldest_Child_Age, Youngest_Child_Age
Mode_Eye_Color) =
(select cnt, avg_age, min_age, max_age, eyecolor
from (select cnt, avg_age, min_age, max_age, eyecolor
ROW_NUMBER() over (order by cnt_ec desc) as seqnum
from (select COUNT(*) over (partition by Parent_id) as cnt,
AVG(Age) over (partition by Parent_id) as avg_age,
MIN(Age) over (partition by Parent_id) as min_age,
MAX(Age) over (partition by Parent_id) as max_age,
COUNT(*) over (partition by Parent_id, eyecolor) as cnt_ec,
eyecolor
from Child
where Parent.ID = Child.Parent_ID
) t
) t
where seqnum = 1
)
UPDATE Parent
SET (Number_Of_Children, Average_Child_Age, Oldest_Child_Age,
Youngest_Child_Age, MODE_EYE_COLOR, BLOODTYPES_THAT_CAN_BE_ACCEPTED,
SOMETHING_COMPLEX ) =
(
SELECT COUNT(*), AVG(Age), MAX(Age), MIN(Age), STATS_MODE(EYE_COLOR),
ListBloodTypes(BLOODTYPE), ComplexCombine(SOMETHING_COMPLEX)
FROM Child
WHERE Parent.ID = Child.Parent_ID
)