I have created a table that contains buckets to hold activitives of
enrollment for each of our admissions officer for each day of an
enrollment session. I have an UPDATE that builds rolling totals and
updates said table. I count unique students from a table that contains
registration information.
Everything works, however it runs pretty slowly and I am wondering if
there is a better approach to writing the SQL. SQL's Engine Tuning
advisor has 0% improvment.
I'd appreciate any suggestions as to better ways to accomplish my goal.
Or, compliments on my genius if there isnt a better way! *grin*
UPDATE F_BI_ADMISSIONS _OFFICER_SUMMAR Y_BY_SESSION_RT _CURRENT -- (RT =
rollingtotal)
SET NEW_REGISTRATIO N_COUNT =
(SELECT COUNT(DISTINCT STUDENT_ID)
FROM
(SELECT aa.session_id, aa.student_id, student_status
FROM F_BI_REGISTRATI ON_TRACKING AA
LEFT OUTER JOIN F_BI_STUDENT_SU MMARY_SESSION BB ON
AA.STUDENT_ID=B B.STUDENT_ID AND AA.SESSION_ID=B B.SESSION_ID
LEFT OUTER JOIN D_BI_STUDENT CC
ON AA.STUDENT_ID = CC.STUDENT_ID AND CC.CURR_IND
= 'Y'
WHERE AA.SESSION_ID = OA.SESSION_ID
AND ACTIVITY_DT <= OA.SESSION_DT
AND CC.TALISMA_AO_I D = OA.ADMREP_ID
AND STUDENT_STATUS = 'NEW'
GROUP BY AA.SESSION_ID, aa.STUDENT_ID, STUDENT_STATUS
HAVING SUM(ACTIVITY_CO UNT) 0
) as ppp
)
FROM F_BI_ADMISSIONS _OFFICER_SUMMAR Y_BY_SESSION_rt _current OA
with 50K rows, this takes about 5 minutes. However I have almost
9,000,000 rows of history. (15 years of 4 quarter sessions). If this
build is linear, it would take 1.25 hours.
My relationships and dependencies are housed in my ETL tool.
// Connection: Target
CREATE TABLE
"dbo"."F_BI_Adm issions_Officer _Summary_By_Ses sion_RT_Current "
(
"AO_SUMMARY_KEY " VARCHAR(43) NULL,
"ADMREP_ID" VARCHAR(15) NULL,
"ADMREP_SKE Y" BIGINT NULL,
"ADMREP_CAPTION " VARCHAR(20) NULL,
"ADMREP_CAMPUS_ ID" VARCHAR(10) NULL,
"ADMREP_CAMPUS_ CAPTION" VARCHAR(30) NULL,
"ADMREP_REGION_ CAPTION" VARCHAR(20) NULL,
"ADMREP_TEAM_CA PTION" VARCHAR(57) NULL,
"ADMREP_EXPIRED _FLAG" VARCHAR(5) NULL,
"SESSION_ID " CHAR(6) NULL,
"SESSION_DA Y" INTEGER NULL,
"SESSION_DT " DATETIME NULL,
"LEAD_COUNT " INTEGER NULL,
"INTERVIEW_COUN T" INTEGER NULL,
"APPLICATION_CO UNT" INTEGER NULL,
"LY_SESSION _ID" VARCHAR(10) NULL,
"LY_LEAD_CO UNT" SMALLINT NULL,
"LY_INTERVIEW_C OUNT" SMALLINT NULL,
"LY_APPLICATION _COUNT" SMALLINT NULL,
"LY_ALL_REGISTR ATION_COUNT" SMALLINT NULL,
"NEW_READMIT_RE GISTRATION_COUN T" SMALLINT NULL,
"ALL_REGISTRATI ON_COUNT" INTEGER NOT NULL,
"NEW_REGISTRATI ON_COUNT" INTEGER NOT NULL,
"READMIT_REGIST RATION_COUNT" INTEGER NOT NULL,
"CONTINUING_REG ISTRATION_COUNT " INTEGER NOT NULL,
"CANCELLED_REGI STRATION_COUNT" INTEGER NOT NULL,
"LY_NEW_REGISTR ATION_COUNT" SMALLINT NULL,
"LY_READMIT_REG ISTRATION_COUNT " SMALLINT NULL,
"LY_CONTINUING_ REGISTRATION_CO UNT" SMALLINT NULL,
"LY_CANCELLED_R EGISTRATION_COU NT" SMALLINT NULL,
"TALISMA_CALLS_ IN" SMALLINT NULL,
"TALISMA_CALLS_ OUT" SMALLINT NULL,
"AVAYA_CALLS_IN " SMALLINT NULL,
"AVAYA_CALLS_OU T" SMALLINT NULL,
"LEAD_FOREC AST" SMALLINT NULL,
"INTERVIEW_FORE CAST" SMALLINT NULL,
"APPLICATION_FO RECAST" SMALLINT NULL,
"NEW_REGISTRATI ON_FORECAST" SMALLINT NULL,
"READMIT_REGIST RATION_FORECAST " SMALLINT NULL,
"CONTINUING_REG ISTRATION_FOREC AST" SMALLINT NULL
)
;
// Connection: Target
CREATE TABLE "dbo"."F_BI_Reg istration_Track ing"
(
"UNIQUE_KEY " VARCHAR(87) NULL,
"REGISTRATION_K EY" VARCHAR(40) NULL,
"REGTRACK_I D" VARCHAR(47) NULL,
"CLASSES_OFFERE D_ID" VARCHAR(23) NULL,
"STUDENT_ID " CHAR(20) NULL,
"SESSION_ID " CHAR(6) NULL,
"FULL_CLASS _ID" VARCHAR(15) NULL,
"CAMPUS_ID" VARCHAR(10) NULL,
"ACTIVITY_D T" DATETIME NULL,
"ACTIVITY_C ODE" VARCHAR(1) NULL,
"LOAD_DT" DATETIME NULL,
"SOURCE" VARCHAR(4) NULL,
"ACTIVITY_COUNT " SMALLINT NULL,
"CLASS_DROP _DT" DATETIME NULL,
"CLASS_DROP_COU NT" SMALLINT NULL,
"CLASS_ADD_ DT" DATETIME NULL,
"CLASS_ADD_COUN T" SMALLINT NULL,
"BEFORE_D0_CLAS S_COUNT" SMALLINT NULL,
"DAY0_CLASS_COU NT" SMALLINT NULL,
"AFTER_D0_CLASS _COUNT" SMALLINT NULL,
"ALL_CLASS_COUN T" SMALLINT NULL,
"BEFORE_D0_ONLI NE_CLASS_COUNT" SMALLINT NULL,
"DAY0_ONLINE_CL ASS_COUNT" SMALLINT NULL,
"AFTER_D0_ONLIN E_CLASS_COUNT" SMALLINT NULL,
"ALL_ONLINE_CLA SS_COUNT" SMALLINT NULL,
"VM_POS" BIGINT NULL,
"SOURCE_FIL E" SMALLINT NULL,
"BANDED_ID" BIGINT NULL,
"CLASSES_OFFERE D_SKEY" BIGINT NULL,
"STUDENT_SK EY" BIGINT NULL,
"SESSION_SK EY" BIGINT NULL,
"CLASS_CAMPUS_S KEY" BIGINT NULL,
"COMPUTED_D T" DATETIME NULL,
"SESSION_DA Y" BIGINT NULL,
"Count_Down " BIGINT NULL,
"AFTER_DAY0_FIR ST_REG_FLAG" SMALLINT NULL
)
;
enrollment for each of our admissions officer for each day of an
enrollment session. I have an UPDATE that builds rolling totals and
updates said table. I count unique students from a table that contains
registration information.
Everything works, however it runs pretty slowly and I am wondering if
there is a better approach to writing the SQL. SQL's Engine Tuning
advisor has 0% improvment.
I'd appreciate any suggestions as to better ways to accomplish my goal.
Or, compliments on my genius if there isnt a better way! *grin*
UPDATE F_BI_ADMISSIONS _OFFICER_SUMMAR Y_BY_SESSION_RT _CURRENT -- (RT =
rollingtotal)
SET NEW_REGISTRATIO N_COUNT =
(SELECT COUNT(DISTINCT STUDENT_ID)
FROM
(SELECT aa.session_id, aa.student_id, student_status
FROM F_BI_REGISTRATI ON_TRACKING AA
LEFT OUTER JOIN F_BI_STUDENT_SU MMARY_SESSION BB ON
AA.STUDENT_ID=B B.STUDENT_ID AND AA.SESSION_ID=B B.SESSION_ID
LEFT OUTER JOIN D_BI_STUDENT CC
ON AA.STUDENT_ID = CC.STUDENT_ID AND CC.CURR_IND
= 'Y'
WHERE AA.SESSION_ID = OA.SESSION_ID
AND ACTIVITY_DT <= OA.SESSION_DT
AND CC.TALISMA_AO_I D = OA.ADMREP_ID
AND STUDENT_STATUS = 'NEW'
GROUP BY AA.SESSION_ID, aa.STUDENT_ID, STUDENT_STATUS
HAVING SUM(ACTIVITY_CO UNT) 0
) as ppp
)
FROM F_BI_ADMISSIONS _OFFICER_SUMMAR Y_BY_SESSION_rt _current OA
with 50K rows, this takes about 5 minutes. However I have almost
9,000,000 rows of history. (15 years of 4 quarter sessions). If this
build is linear, it would take 1.25 hours.
My relationships and dependencies are housed in my ETL tool.
// Connection: Target
CREATE TABLE
"dbo"."F_BI_Adm issions_Officer _Summary_By_Ses sion_RT_Current "
(
"AO_SUMMARY_KEY " VARCHAR(43) NULL,
"ADMREP_ID" VARCHAR(15) NULL,
"ADMREP_SKE Y" BIGINT NULL,
"ADMREP_CAPTION " VARCHAR(20) NULL,
"ADMREP_CAMPUS_ ID" VARCHAR(10) NULL,
"ADMREP_CAMPUS_ CAPTION" VARCHAR(30) NULL,
"ADMREP_REGION_ CAPTION" VARCHAR(20) NULL,
"ADMREP_TEAM_CA PTION" VARCHAR(57) NULL,
"ADMREP_EXPIRED _FLAG" VARCHAR(5) NULL,
"SESSION_ID " CHAR(6) NULL,
"SESSION_DA Y" INTEGER NULL,
"SESSION_DT " DATETIME NULL,
"LEAD_COUNT " INTEGER NULL,
"INTERVIEW_COUN T" INTEGER NULL,
"APPLICATION_CO UNT" INTEGER NULL,
"LY_SESSION _ID" VARCHAR(10) NULL,
"LY_LEAD_CO UNT" SMALLINT NULL,
"LY_INTERVIEW_C OUNT" SMALLINT NULL,
"LY_APPLICATION _COUNT" SMALLINT NULL,
"LY_ALL_REGISTR ATION_COUNT" SMALLINT NULL,
"NEW_READMIT_RE GISTRATION_COUN T" SMALLINT NULL,
"ALL_REGISTRATI ON_COUNT" INTEGER NOT NULL,
"NEW_REGISTRATI ON_COUNT" INTEGER NOT NULL,
"READMIT_REGIST RATION_COUNT" INTEGER NOT NULL,
"CONTINUING_REG ISTRATION_COUNT " INTEGER NOT NULL,
"CANCELLED_REGI STRATION_COUNT" INTEGER NOT NULL,
"LY_NEW_REGISTR ATION_COUNT" SMALLINT NULL,
"LY_READMIT_REG ISTRATION_COUNT " SMALLINT NULL,
"LY_CONTINUING_ REGISTRATION_CO UNT" SMALLINT NULL,
"LY_CANCELLED_R EGISTRATION_COU NT" SMALLINT NULL,
"TALISMA_CALLS_ IN" SMALLINT NULL,
"TALISMA_CALLS_ OUT" SMALLINT NULL,
"AVAYA_CALLS_IN " SMALLINT NULL,
"AVAYA_CALLS_OU T" SMALLINT NULL,
"LEAD_FOREC AST" SMALLINT NULL,
"INTERVIEW_FORE CAST" SMALLINT NULL,
"APPLICATION_FO RECAST" SMALLINT NULL,
"NEW_REGISTRATI ON_FORECAST" SMALLINT NULL,
"READMIT_REGIST RATION_FORECAST " SMALLINT NULL,
"CONTINUING_REG ISTRATION_FOREC AST" SMALLINT NULL
)
;
// Connection: Target
CREATE TABLE "dbo"."F_BI_Reg istration_Track ing"
(
"UNIQUE_KEY " VARCHAR(87) NULL,
"REGISTRATION_K EY" VARCHAR(40) NULL,
"REGTRACK_I D" VARCHAR(47) NULL,
"CLASSES_OFFERE D_ID" VARCHAR(23) NULL,
"STUDENT_ID " CHAR(20) NULL,
"SESSION_ID " CHAR(6) NULL,
"FULL_CLASS _ID" VARCHAR(15) NULL,
"CAMPUS_ID" VARCHAR(10) NULL,
"ACTIVITY_D T" DATETIME NULL,
"ACTIVITY_C ODE" VARCHAR(1) NULL,
"LOAD_DT" DATETIME NULL,
"SOURCE" VARCHAR(4) NULL,
"ACTIVITY_COUNT " SMALLINT NULL,
"CLASS_DROP _DT" DATETIME NULL,
"CLASS_DROP_COU NT" SMALLINT NULL,
"CLASS_ADD_ DT" DATETIME NULL,
"CLASS_ADD_COUN T" SMALLINT NULL,
"BEFORE_D0_CLAS S_COUNT" SMALLINT NULL,
"DAY0_CLASS_COU NT" SMALLINT NULL,
"AFTER_D0_CLASS _COUNT" SMALLINT NULL,
"ALL_CLASS_COUN T" SMALLINT NULL,
"BEFORE_D0_ONLI NE_CLASS_COUNT" SMALLINT NULL,
"DAY0_ONLINE_CL ASS_COUNT" SMALLINT NULL,
"AFTER_D0_ONLIN E_CLASS_COUNT" SMALLINT NULL,
"ALL_ONLINE_CLA SS_COUNT" SMALLINT NULL,
"VM_POS" BIGINT NULL,
"SOURCE_FIL E" SMALLINT NULL,
"BANDED_ID" BIGINT NULL,
"CLASSES_OFFERE D_SKEY" BIGINT NULL,
"STUDENT_SK EY" BIGINT NULL,
"SESSION_SK EY" BIGINT NULL,
"CLASS_CAMPUS_S KEY" BIGINT NULL,
"COMPUTED_D T" DATETIME NULL,
"SESSION_DA Y" BIGINT NULL,
"Count_Down " BIGINT NULL,
"AFTER_DAY0_FIR ST_REG_FLAG" SMALLINT NULL
)
;
Comment