== Индекси и оптимизација на прашалници == == Индекс idx_appointment_room_time == • Погледот View_Free_Upcoming_Slots се филтрира според exam_room_id и се користи за прикажување на слободни термини во една соба за преглед. Погледот овозможува увид на временски интервали во наредните 24 часа почнувајќи од моменталното време, и изведениот интервал е 30 минути - проценка на времетраење на еден преглед. • Иницијалното време на извршување е 492.828ms. Ова е прифатливо време. ```EXPLAIN ANALYZE SELECT * FROM View_Free_Upcoming_Slots WHERE exam_room_id = 1;``` [[Image(filter.png)]] • Времето на извршување на insert изнесува 40.213ms. Тоа време е задоволително. ```EXPLAIN ANALYZE INSERT INTO Appointment (appointment_id, appointment-time, status, exam_room_id) VALUES (10000001, NOW() + INTERVAL '2 hours', 'Scheduled', 1);``` [[Image(insert.png)]] • Времето на извршување на update изнесува 2137.049ms. Тоа време можеме да го подобриме со индекс, бидејќи овој view би бил користен повеќе пати на ден при закажување нови прегледи. ```EXPLAIN ANALYZE``` ```UPDATE Appointment SET appointment_time = appointment_time + INTERVAL '30 minutes' WHERE exam_room_id = 1 AND status = 'Scheduled';``` [[Image(update1.png)]] == Креирање на индексот == CREATE INDEX idx_appointment_room_time ON Appointment (exam_room_id, status, appointment_time); == Подобрување на операцијата update по креирање на индекс == [[Image(update2.png)]] == Останати погледи == • Останатите погледи во базата се извршуваат за време побрзо од 1 секунда така што не им е потребно индексирање и оптимизација. Дополнителни информации за анализа на погледите и нивната брзина може да погледнете во документацијата на следниот линк. [attachment:индекси.pdf Линк до документација за оптимизација на прашалници]