= Преглед: v_menu_drink = ||= Својство ||= Вредност || || Шема || `kbnteam` || || Категорија || Мени и каталог || || Поврзани индекси || Примарни и уникатни клучеви || == Опис == Ги прикажува пијалоците, нивната количина и цена, како и ресторанот. Едноставно спојување на `drink` и `restaurant`, без агрегации. Еден ред за секој пијалак. Менито не се ограничува според активноста на договорите. == Зависности == ||= Табела / преглед ||= Употреба || || `kbnteam.drink` || Пијалоци, количини, цени и ресторан. || || `kbnteam.restaurant` || Податоци за рестораните. || == Излезни колони == ||= Колона ||= Извор / пресметка ||= Опис || || `drink_id` || `drink.drink_id` || Идентификатор на пијалакот. || || `drink_name` || `drink.drink_name` || Назив на пијалакот. || || `drink_milliliters` || `drink.drink_milliliters` || Количина во милилитри. || || `drink_price` || `drink.drink_price` || Цена на пијалакот. || || `rest_id` || `restaurant.rest_id` || Идентификатор на ресторанот. || || `rest_name` || `restaurant.rest_name` || Назив на ресторанот. || == SQL дефиниција == {{{ #!sql CREATE OR REPLACE VIEW kbnteam.v_menu_drink AS SELECT d.drink_id, d.drink_name, d.drink_milliliters, d.drink_price, r.rest_id, r.rest_name FROM kbnteam.drink d JOIN kbnteam.restaurant r ON r.rest_id = d.rest_id; }}} == Тестирање на перформанси == Мерењата се евидентирани во DBeaver на 14 септември 2026 година. „Пред индексирање“ и „по индексирање“ ги означуваат групите наведени како „без индекси“ и „со индекси“ во евиденцијата. Точниот сет присутни индекси во секоја група не е евидентиран; „без индекси“ не потврдува отсуство на индекси од примарни и уникатни клучеви. Наведените времиња се клиентски мерења од DBeaver, а не серверските Planning Time и Execution Time од EXPLAIN ANALYZE. Нема приложени планови, типови на скенирање или податоци за баферите. Вредностите се во милисекунди (ms). === Измерен прашалник === {{{ #!sql SELECT * FROM kbnteam.v_menu_drink WHERE rest_id = 36; }}} === Резултати пред индексирање === ||= Метрика ||= Измерен резултат || || Клиентско време (ms) || 147 || || Приказ на мерењето || Време прикажано со резултатот во DBeaver || || Прикажани / преземени редови || 2 || || Planning Time / Execution Time од EXPLAIN || Не се измерени || || План, тип на скенирање и бафери || Не се приложени || === Дополнителни и заеднички индекси === `drink(rest_id, drink_name)` е покриен со уникатното ограничување `uq_drink_restaurant_name`, а `restaurant(rest_id)` со примарен клуч. За овој преглед нема дополнителен индекс. Нема дополнителна CREATE INDEX наредба за овој преглед. Тековната дефиниција се потпира на основните индекси. Евиденцијата не го потврдува точниот сет индекси во двете измерени состојби. === Проверка на индексите === {{{ #!sql SELECT tablename, indexname, indexdef FROM pg_indexes WHERE schemaname = 'kbnteam' AND tablename IN ('drink', 'restaurant') ORDER BY tablename, indexname; }}} === Резултати по индексирање === ||= Метрика ||= Измерен резултат || || Клиентско време (ms) || 37 || || Приказ на мерењето || Време прикажано со резултатот во DBeaver || || Прикажани / преземени редови || 2 || || Planning Time / Execution Time од EXPLAIN || Не се измерени || || План, тип на скенирање и бафери || Не се приложени || === Анализа на резултатите === ||= Метрика ||= Пред ||= По ||= Промена на времето || || Клиентско време (ms) || 147 || 37 || -74,8% || Времето е пократко за 110 ms (74,8%). Уникатниот индекс по ресторан и назив веќе го поддржува филтерот, а во тековната дефиниција нема дополнителен индекс за овој поглед. Разликата не докажува корист од нов индекс; можни се разлики во кеширањето и условите на мерење. Промената се пресметува како 100 × (време по - време пред) / време пред. Негативна вредност значи пократко време, а позитивна подолго време. Процентот ја опишува разликата меѓу прикажаните вредности. Ова се поединечни набљудувања. Не се евидентирани контролирани повторувања, исти услови за кеширање и оптоварување или точните дефиниции на присутните индекси. Затоа промената на времето не е доказ дека индексите се единствената причина. Не се приложени мерења за INSERT, UPDATE и DELETE. === Дополнително тестирање - сè уште неизмерено === Следниот прашалник служи за ново мерење на серверскиот план со истиот филтер. Неговите резултати не се пополнети со клиентските времиња наведени погоре. За споредба се задржуваат исти податоци и поставки, се евидентираат присутните индекси, се ажурираат статистиките и се прават повеќе повторувања во двете состојби. Се споредуваат медијаната на времињата и плановите. {{{ #!sql BEGIN READ ONLY; SET LOCAL statement_timeout = '60s'; EXPLAIN (ANALYZE, BUFFERS, VERBOSE) SELECT * FROM kbnteam.v_menu_drink WHERE rest_id = 36; ROLLBACK; }}} ||= Метрика за дополнителното тестирање ||= Пред ||= По || || Planning Time (ms) || Не е измерено || Не е измерено || || Execution Time (ms) || Не е измерено || Не е измерено || || Тип на скенирање по табела || Не е евидентиран || Не е евидентиран || || Shared Hit Blocks / Shared Read Blocks || Не се измерени || Не се измерени ||