wiki:DriverDeliveriesView

Преглед: v_driver_deliveries

Својство Вредност
Шема kbnteam
Категорија Нарачки и достави
Индексна поддршка v_driver_deliveries_index

Опис

Ги прикажува доставите, доставувачите, рестораните, компаниите и поврзаните нарачки.

Го користи прегледот на нарачки за деталите за клиентот и нарачаните производи. Се прикажуваат и доставите без назначен доставувач или поврзани нарачки.

Еден ред за секоја клиентска нарачка во доставата. Достава без клиентски нарачки останува прикажана со NULL податоци за нарачката.

Податоците за нарачките се добиваат преку v_orders_full. Овој преглед е зависност на прегледот за достави.

Зависности

Табела / преглед Употреба
kbnteam.delivery Достави, датуми, забелешки и назначени доставувачи.
kbnteam.delivery_status Називи на статусите на доставите.
kbnteam.driver Доставувачи и нивните ресторани.
kbnteam.api_user Лични и контактни податоци за корисниците.
kbnteam.restaurant Податоци за рестораните.
kbnteam.company_order Поврзување на компаниските нарачки со компанијата и доставата.
kbnteam.company Податоци за компаниите.
v_orders_full Преглед со детали за клиентските нарачки и листи со производи.

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

Колона Извор / пресметка Опис
delivery_id delivery.delivery_id Идентификатор на доставата.
delivery_date delivery.delivery_date Датум на доставата.
delivery_notes delivery.delivery_notes Забелешки за доставата.
d_status_name delivery_status.d_status_name Статус на доставата.
driver_user_id driver.user_id Идентификатор на доставувачот.
driver_first_name api_user.user_first_name Име на доставувачот.
driver_last_name api_user.user_last_name Презиме на доставувачот.
driver_phone api_user.user_phone_no Телефон на доставувачот.
rest_id restaurant.rest_id Идентификатор на ресторанот.
rest_name restaurant.rest_name Назив на ресторанот.
comp_order_id company_order.comp_order_id Идентификатор на компаниската нарачка.
company_id company.company_id Идентификатор на компанијата.
company_name company.company_name Назив на компанијата.
order_id v_orders_full.order_id Идентификатор на клиентската нарачка.
order_datetime v_orders_full.order_datetime Датум и време на нарачката.
order_total v_orders_full.order_total Вкупен износ на нарачката.
customer_user_id v_orders_full.customer_user_id Идентификатор на клиентот.
customer_first_name v_orders_full.customer_first_name Име на клиентот.
customer_last_name v_orders_full.customer_last_name Презиме на клиентот.
customer_email v_orders_full.customer_email Е-пошта на клиентот.
meals COALESCE(v_orders_full.meals, '') Подредена листа со називи на нарачаните јадења.
drinks COALESCE(v_orders_full.drinks, '') Подредена листа со називи на нарачаните пијалоци.

SQL дефиниција

CREATE OR REPLACE VIEW kbnteam.v_driver_deliveries AS
SELECT
    d.delivery_id,
    d.delivery_date,
    d.delivery_notes,
    ds.d_status_name,
    drv.user_id AS driver_user_id,
    du.user_first_name AS driver_first_name,
    du.user_last_name AS driver_last_name,
    du.user_phone_no AS driver_phone,
    r.rest_id,
    r.rest_name,
    co.comp_order_id,
    cmp.company_id,
    cmp.company_name,
    o.order_id,
    o.order_datetime,
    o.order_total,
    o.customer_user_id,
    o.customer_first_name,
    o.customer_last_name,
    o.customer_email,
    COALESCE(o.meals, '') AS meals,
    COALESCE(o.drinks, '') AS drinks
FROM kbnteam.delivery d
JOIN kbnteam.delivery_status ds ON ds.d_status_id = d.d_status_id
LEFT JOIN kbnteam.driver drv ON drv.user_id = d.driver_user_id
LEFT JOIN kbnteam.api_user du ON du.user_id = drv.user_id
LEFT JOIN kbnteam.restaurant r ON r.rest_id = drv.rest_id
LEFT JOIN kbnteam.company_order co ON co.delivery_id = d.delivery_id
LEFT JOIN kbnteam.company cmp ON cmp.company_id = co.company_id
LEFT JOIN kbnteam.v_orders_full o ON o.comp_order_id = co.comp_order_id;

Индексна поддршка

Дополнителното индексирање е поставено врз изворните табели на погледот.

Индекс Табела и колони Намена
idx_delivery_driver_user_id_delivery_date delivery(driver_user_id, delivery_date) Пребарување достави по доставувач и датум.
idx_company_order_company_id company_order(company_id) Пронаоѓање компаниски нарачки по компанија.
idx_customer_order_comp_order_id customer_order(comp_order_id) Пронаоѓање клиентски нарачки по компаниска нарачка.
idx_order_meal_order_id_meal_id order_meal(order_id, meal_id) Поврзување на нарачката со јадењата и групирање по order_id.
idx_order_drink_order_id_drink_id order_drink(order_id, drink_id) Поврзување на нарачката со пијалоците и групирање по order_id.

Дефинициите се наведени во v_driver_deliveries_index. За поврзаните табели се користат и индексите опишани во v_orders_full_index.

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

SELECT

Мерењата се евидентирани во DBeaver. Времињата се во милисекунди (ms).

SELECT * FROM kbnteam.v_driver_deliveries
WHERE driver_user_id = 450;
Мерење Клиентско време (ms) Приказ во DBeaver
Пред индексирање околу 70000 Преземени 200 редови
По индексирање 48236 Вкупно време за 2 наредби

Во статистиката по индексирањето се прикажани следните времиња:

Метрика Време (ms)
Execute 48208
Fetch 28
Вкупно 48236

Првото мерење прикажува околу 1 минута и 10 секунди за 200 редови, а второто статистика за две наредби. Споредбата е ориентациска поради различниот начин на мерење.

INSERT и UPDATE

Тестирани се по еден INSERT и еден UPDATE врз kbnteam.delivery, главната табела на погледот. Се тестира додавање достава и промена на забелешката.

Операција Execute (ms) Fetch (ms) Вратени редови
INSERT 13 16 1
UPDATE 13 13 1

Execute е времето на извршување прикажано во DBeaver. Fetch вредностите се преземени од дополнетата евиденција на тестирањето. Ова се клиентски времиња, изразени во милисекунди.

Двете операции се успешни и враќаат по еден ред преку RETURNING. По мерењето промените се вратени со ROLLBACK.

INSERT и UPDATE се извршуваат со прифатлива брзина. Овие мерења ја опишуваат тестираната состојба на базата и не се споредба пред и по индексирање.

Last modified 10 days ago Last modified on 09/16/26 11:54:18
Note: See TracWiki for help on using the wiki.