| | 2 | |
| | 3 | == Индекс idx_appointment_room_time == |
| | 4 | |
| | 5 | • Погледот View_Free_Upcoming_Slots се филтрира според exam_room_id и се користи за прикажување на слободни термини во една соба за преглед. Погледот овозможува увид на временски интервали во наредните 24 часа почнувајќи од моменталното време, и изведениот интервал е 30 минути - проценка на времетраење на еден преглед. |
| | 6 | |
| | 7 | • Иницијалното време на извршување е 492.828ms. Ова е прифатливо време. |
| | 8 | |
| | 9 | EXPLAIN ANALYZE SELECT * FROM View_Free_Upcoming_Slots WHERE exam_room_id = 1; |
| | 10 | слика |
| | 11 | |
| | 12 | • Времето на извршување на insert изнесува 40.213ms. Тоа време е задоволително. |
| | 13 | |
| | 14 | EXPLAIN ANALYZE |
| | 15 | INSERT INTO Appointment (appointment_id, appointment-time, status, exam_room_id) VALUES (10000001, NOW() + INTERVAL '2 hours', 'Scheduled', 1); |
| | 16 | слика |
| | 17 | |
| | 18 | • Времето на извршување на update изнесува 2137.049ms. Тоа време можеме да го подобриме со индекс, бидејќи овој view би бил користен повеќе пати на ден при закажување нови прегледи. |
| | 19 | |
| | 20 | EXPLAIN ANALYZE |
| | 21 | UPDATE Appointment SET appointment_time = appointment_time + INTERVAL '30 minutes' WHERE exam_room_id = 1 AND status = 'Scheduled'; |
| | 22 | слика |
| | 23 | |
| | 24 | == Креирање на индексот == |
| | 25 | |
| | 26 | CREATE INDEX idx_appointment_room_time ON Appointment (exam_room_id, status, appointment_time); |
| | 27 | |
| | 28 | == Подобрување на операцијата update по креирање на индекс == |
| | 29 | |
| | 30 | слика |
| | 31 | |
| | 32 | |
| | 33 | == Останати погледи == |
| | 34 | |
| | 35 | • Останатите погледи во базата се извршуваат за време побрзо од 1 секунда така што не им е потребно индексирање и оптимизација. Дополнителни информации за анализа на погледите и нивната брзина може да погледнете во документацијата на следниот линк. |
| | 36 | |