wiki:MenuDrinkView

Преглед: v_menu_drink

Датотека views/01_menu_drink_view.sql
Шема kbnteam
Категорија Мени и Каталог
Поврзани индекси indexes/v_menu_drink_index.sql

Опис

Едноставен преглед кој ги наведува сите пијачи достапни на секој ресторан заедно со деталите за ресторанот. Се користи за прелистување на мени и договорни нарачки преку веб апликацијата.

Зависности

Табела Тип на употреба
kbnteam.drink Главна табела — ги содржи деталите за пијачот
kbnteam.restaurant JOIN — ги додава деталите за ресторанот

Излезни колони

Колона Извор Опис
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 Дефиниција

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;

Тестирање на перформанси

Препорачано тест прашање

SET search_path TO kbnteam;
SET statement_timeout = '60s';

-- Тест 1: целосен скен на прегледот
EXPLAIN (ANALYZE, BUFFERS, VERBOSE)
SELECT * FROM kbnteam.v_menu_drink;

-- Тест 2: филтрирање по ресторан (препорачано за мерење на индексот)
EXPLAIN (ANALYZE, BUFFERS, VERBOSE)
SELECT * FROM kbnteam.v_menu_drink
WHERE rest_id = 1;

Резултати пред индексирање

Извршете ги горните прашања пред да ја примените датотеката indexes/v_menu_drink_index.sql.

Метрика Тест 1 (целосен скен) Тест 2 (по rest_id)
Planning Time _ ms _ ms
Execution Time _ ms _ ms
Rows Returned _ _
Scan Type _ _
-- Излезот од EXPLAIN ANALYZE овде (пред индексирање)

Применети индекси

-- indexes/v_menu_drink_index.sql
-- Note: uq_drink_restaurant_name already supports (rest_id, drink_name).
CREATE INDEX IF NOT EXISTS idx_drink_rest_id_drink_id
ON kbnteam.drink (rest_id, drink_id);

Резултати по индексирање

Извршете ги истите прашања по примена на indexes/v_menu_drink_index.sql.

Метрика Тест 1 (целосен скен) Тест 2 (по rest_id)
Planning Time _ ms _ ms
Execution Time _ ms _ ms
Rows Returned _ _
Scan Type _ _
-- Излезот од EXPLAIN ANALYZE овде (по индексирање)

Анализа на подобрување

Метрика Пред По Δ Подобрување
Execution Time _ ms _ ms _ %
Scan Type (Тест 2) Seq Scan Index Scan

Очекувано: idx_drink_rest_id_drink_id на drink(rest_id, drink_id) го поддржува JOIN-от со restaurant и директното филтрирање по rest_id. На мали датасети планерот може да остане на Seq Scan. Подобрувањето е поизразено при филтрирање по конкретен ресторан.

Last modified 2 weeks ago Last modified on 05/10/26 14:25:29
Note: See TracWiki for help on using the wiki.