Changes between Initial Version and Version 1 of MenuDrinkView


Ignore:
Timestamp:
05/10/26 14:25:29 (2 weeks ago)
Author:
185022
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MenuDrinkView

    v1 v1  
     1= Преглед: v_menu_drink =
     2
     3||= Датотека ||= `views/01_menu_drink_view.sql` ||
     4||= Шема ||= `kbnteam` ||
     5||= Категорија ||= Мени и Каталог ||
     6||= Поврзани индекси ||= `indexes/v_menu_drink_index.sql` ||
     7
     8== Опис ==
     9Едноставен преглед кој ги наведува сите пијачи достапни на секој ресторан заедно со деталите за ресторанот. Се користи за прелистување на мени и договорни нарачки преку веб апликацијата.
     10
     11== Зависности ==
     12||= Табела ||= Тип на употреба ||
     13|| `kbnteam.drink` || Главна табела — ги содржи деталите за пијачот ||
     14|| `kbnteam.restaurant` || JOIN — ги додава деталите за ресторанот ||
     15
     16== Излезни колони ==
     17||= Колона ||= Извор ||= Опис ||
     18|| `drink_id` || `drink.drink_id` || Примарен клуч на пијачот ||
     19|| `drink_name` || `drink.drink_name` || Назив на пијачот ||
     20|| `drink_milliliters` || `drink.drink_milliliters` || Волумен во милилитри ||
     21|| `drink_price` || `drink.drink_price` || Цена ||
     22|| `rest_id` || `restaurant.rest_id` || Примарен клуч на ресторанот ||
     23|| `rest_name` || `restaurant.rest_name` || Назив на ресторанот ||
     24
     25== SQL Дефиниција ==
     26{{{
     27#!sql
     28CREATE OR REPLACE VIEW kbnteam.v_menu_drink AS
     29SELECT
     30    d.drink_id,
     31    d.drink_name,
     32    d.drink_milliliters,
     33    d.drink_price,
     34    r.rest_id,
     35    r.rest_name
     36FROM kbnteam.drink d
     37JOIN kbnteam.restaurant r ON r.rest_id = d.rest_id;
     38}}}
     39
     40== Тестирање на перформанси ==
     41
     42=== Препорачано тест прашање ===
     43{{{
     44#!sql
     45SET search_path TO kbnteam;
     46SET statement_timeout = '60s';
     47
     48-- Тест 1: целосен скен на прегледот
     49EXPLAIN (ANALYZE, BUFFERS, VERBOSE)
     50SELECT * FROM kbnteam.v_menu_drink;
     51
     52-- Тест 2: филтрирање по ресторан (препорачано за мерење на индексот)
     53EXPLAIN (ANALYZE, BUFFERS, VERBOSE)
     54SELECT * FROM kbnteam.v_menu_drink
     55WHERE rest_id = 1;
     56}}}
     57
     58=== Резултати пред индексирање ===
     59Извршете ги горните прашања '''пред''' да ја примените датотеката `indexes/v_menu_drink_index.sql`.
     60
     61||= Метрика ||= Тест 1 (целосен скен) ||= Тест 2 (по rest_id) ||
     62|| Planning Time || ___ ms || ___ ms ||
     63|| Execution Time || ___ ms || ___ ms ||
     64|| Rows Returned || ___ || ___ ||
     65|| Scan Type || ___ || ___ ||
     66
     67{{{
     68-- Излезот од EXPLAIN ANALYZE овде (пред индексирање)
     69}}}
     70
     71=== Применети индекси ===
     72{{{
     73#!sql
     74-- indexes/v_menu_drink_index.sql
     75-- Note: uq_drink_restaurant_name already supports (rest_id, drink_name).
     76CREATE INDEX IF NOT EXISTS idx_drink_rest_id_drink_id
     77ON kbnteam.drink (rest_id, drink_id);
     78}}}
     79
     80=== Резултати по индексирање ===
     81Извршете ги истите прашања '''по''' примена на `indexes/v_menu_drink_index.sql`.
     82
     83||= Метрика ||= Тест 1 (целосен скен) ||= Тест 2 (по rest_id) ||
     84|| Planning Time || ___ ms || ___ ms ||
     85|| Execution Time || ___ ms || ___ ms ||
     86|| Rows Returned || ___ || ___ ||
     87|| Scan Type || ___ || ___ ||
     88
     89{{{
     90-- Излезот од EXPLAIN ANALYZE овде (по индексирање)
     91}}}
     92
     93=== Анализа на подобрување ===
     94||= Метрика ||= Пред ||= По ||= Δ Подобрување ||
     95|| Execution Time || ___ ms || ___ ms || ___ % ||
     96|| Scan Type (Тест 2) || Seq Scan || Index Scan || — ||
     97
     98'''Очекувано:''' `idx_drink_rest_id_drink_id` на `drink(rest_id, drink_id)` го поддржува JOIN-от со `restaurant` и директното филтрирање по `rest_id`. На мали датасети планерот може да остане на Seq Scan. Подобрувањето е поизразено при филтрирање по конкретен ресторан.