| | 34 | Користење: JOIN на `ct.course_id` + WHERE филтер на `ct.language` |
| | 35 | |
| | 36 | Подобрување: Index Scan наместо Seq Scan (**~60x побрзо**) |
| | 37 | |
| | 38 | --- |
| | 39 | |
| | 40 | **2. course_version - Index (course_id)** |
| | 41 | {{{ |
| | 42 | CREATE INDEX idx_course_version_course_id |
| | 43 | ON course_version(course_id); |
| | 44 | }}} |
| | 45 | Користење: JOIN на `cv.course_id` |
| | 46 | |
| | 47 | Подобрување: Директен lookup (**~45x побрзо**) |
| | 48 | |
| | 49 | --- |
| | 50 | |
| | 51 | **3. enrollment - Index (course_version_id)** |
| | 52 | {{{ |
| | 53 | CREATE INDEX idx_enrollment_course_version_id |
| | 54 | ON enrollment(course_version_id); |
| | 55 | }}} |
| | 56 | Користење: JOIN на `e.course_version_id` |
| | 57 | |
| | 58 | Подобрување: Избегнува full table scan (**~60x побрзо**) |
| | 59 | |
| | 60 | --- |
| | 61 | |
| | 62 | **4. review - Unique (enrollment_id)** |
| | 63 | {{{ |
| | 64 | CREATE UNIQUE INDEX uk_review_enrollment |
| | 65 | ON review(enrollment_id); |
| | 66 | }}} |
| | 67 | Користење: JOIN на `r.enrollment_id` |
| | 68 | |
| | 69 | Подобрување: Unique scan (**~35x побрзо**) |
| | 70 | |
| | 71 | --- |
| | 72 | |
| | 73 | **5. course - Primary Key (id)** |
| | 74 | {{{ |
| | 75 | -- Автоматски креиран со PRIMARY KEY |
| | 76 | CREATE UNIQUE INDEX course_pkey |
| | 77 | ON course(id); |
| | 78 | }}} |
| | 79 | Користење: Примарна табела PK lookup |
| | 80 | |
| | 81 | --- |
| | 82 | |
| | 83 | **Сумарно:** |
| | 84 | - **Без индекси:** Seq Scan на сите табели (бавно) |
| | 85 | - **Со индекси:** Index Scan на сите JOIN-ови и WHERE (брзо) |
| | 86 | - **Подобрување:** **~30x побрзо** |