QueryOptimization: testing.sql

File testing.sql, 3.0 KB (added by 231082, 4 days ago)

Code for prototyping optimization.

Line 
1EXPLAIN (ANALYZE, BUFFERS, VERBOSE, TIMING, FORMAT TEXT)
2SELECT * FROM v_student_current_semester
3WHERE student_id = 12345; -- OK
4
5
6EXPLAIN (ANALYZE, BUFFERS, VERBOSE, TIMING, FORMAT TEXT)
7SELECT * FROM v_student_upcoming_deadlines
8WHERE student_id = 12345; -- OK
9
10
11EXPLAIN (ANALYZE, BUFFERS, VERBOSE, TIMING, FORMAT TEXT)
12SELECT * FROM v_student_transcript
13WHERE student_id = 12345; -- OK
14
15
16EXPLAIN (ANALYZE, BUFFERS, VERBOSE, TIMING, FORMAT TEXT)
17SELECT * FROM v_course_announcements
18WHERE edition_id = 12345; -- OK
19
20
21EXPLAIN (ANALYZE, BUFFERS, VERBOSE, TIMING, FORMAT TEXT)
22SELECT * FROM v_exercise_grading_queue
23WHERE exercise_id = 12345; -- OK
24
25
26EXPLAIN (ANALYZE, BUFFERS, VERBOSE, TIMING, FORMAT TEXT)
27SELECT * FROM v_course_prerequisite_chain
28WHERE course_code = 'F23L3S138'; -- OK
29
30
31
32
33EXPLAIN (ANALYZE, BUFFERS, VERBOSE, TIMING, FORMAT TEXT)
34SELECT * FROM v_student_registration_state
35WHERE student_id = 12345;
36
37CREATE INDEX CONCURRENTLY idx_pe_student_active ON Program_Enrollment(student_id)
38 WHERE date_disenrollment IS NULL AND finished IS NOT TRUE;
39
40CREATE INDEX CONCURRENTLY idx_se_pe_year_sem ON Semester_Enrollment(program_enrollment_id, academic_year, semester);
41
42CREATE INDEX CONCURRENTLY idx_ce_semester ON Course_Enrollment(semester_enrollment_id);
43CREATE INDEX CONCURRENTLY idx_ce_edition ON Course_Enrollment(course_edition_id);
44
45CREATE INDEX CONCURRENTLY idx_sg_ce ON Student_Grade(course_enrollment_id);
46
47CREATE INDEX CONCURRENTLY idx_course_equiv_course1 ON Course_Equivalence(course1_code);
48CREATE INDEX CONCURRENTLY idx_course_equiv_course2 ON Course_Equivalence(course2_code);
49
50-- INDICES STILL DON'T HELP --> USE FUNCTION fn_student_registration_state
51SELECT * FROM fn_student_registration_state(12345);
52
53--------------------------------------------------
54
55EXPLAIN (ANALYZE, BUFFERS, VERBOSE, TIMING, FORMAT TEXT)
56SELECT * FROM v_teaching_assistant_eligibility
57WHERE edition_id = 13139;
58
59CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_ce_edition ON Course_Enrollment(course_edition_id);
60CREATE INDEX CONCURRENTLY idx_teaches_edition ON Teaches(course_edition_id);
61CREATE INDEX CONCURRENTLY idx_exercise_edition ON Exercise(course_edition_id);
62CREATE INDEX CONCURRENTLY idx_exam_edition ON Exam(course_edition_id);
63CREATE INDEX CONCURRENTLY idx_survey_edition ON Survey(course_edition_id);
64
65CREATE INDEX CONCURRENTLY idx_se_year_sem ON Semester_Enrollment(academic_year, semester);
66
67CREATE INDEX CONCURRENTLY idx_teaching_assistant_student ON Teaching_Assistant(student_id);
68CREATE INDEX CONCURRENTLY idx_teaches_teacher_edition ON Teaches(teacher_id, course_edition_id);
69
70-- INDICES STILL DON'T HELP --> USE FUNCTION fn_teaching_assistant_eligibility
71SELECT DISTINCT id FROM Teacher WHERE id >= 10000 LIMIT 1;
72SELECT DISTINCT id FROM Course_Edition ORDER BY id DESC;
73SELECT * FROM fn_teaching_assistant_eligibility(13139);
74
75-- DROP INDEX idx_teaches_edition;
76-- DROP INDEX idx_exercise_edition;
77-- DROP INDEX idx_exam_edition;
78-- DROP INDEX idx_survey_edition;
79--
80-- DROP INDEX idx_se_year_sem;
81--
82-- DROP INDEX idx_teaching_assistant_student;
83-- DROP INDEX idx_teaches_teacher_edition;