wiki:OrdersFullIndex

Version 3 (modified by 223235, 12 days ago) ( diff )

--

Индекси: v_orders_full_index

Својство Вредност
Шема kbnteam
Област Нарачки и достави
Главен преглед v_orders_full

Опис

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

Примарните клучеви ги покриваат идентификаторите, а company_order(delivery_id) има уникатен индекс.

DDL

CREATE INDEX IF NOT EXISTS idx_company_order_company_id
ON kbnteam.company_order (company_id);

CREATE INDEX IF NOT EXISTS idx_customer_order_comp_order_id
ON kbnteam.customer_order (comp_order_id);

CREATE INDEX IF NOT EXISTS idx_order_meal_order_id_meal_id
ON kbnteam.order_meal (order_id, meal_id);

CREATE INDEX IF NOT EXISTS idx_order_drink_order_id_drink_id
ON kbnteam.order_drink (order_id, drink_id);

Поддржани прегледи

Индекс Прегледи Намена
idx_company_order_company_id v_orders_full, v_driver_deliveries, v_reviews_full, v_contracts_revenue, v_company_billing_overview Пронаоѓање компаниски нарачки по компанија.
idx_customer_order_comp_order_id v_orders_full, v_driver_deliveries, v_reviews_full, v_contracts_revenue, v_company_billing_overview Пронаоѓање клиентски нарачки по компаниска нарачка.
idx_order_meal_order_id_meal_id v_orders_full, v_driver_deliveries, v_contracts_revenue Пристап до јадењата на нарачката и групирање по order_id.
idx_order_drink_order_id_drink_id v_orders_full, v_driver_deliveries, v_contracts_revenue Пристап до пијалоците на нарачката и групирање по order_id.
idx_delivery_driver_user_id_delivery_date v_driver_deliveries, v_orders_full, v_reviews_full Пронаоѓање достави по доставувач; во прегледите за нарачки и достави и по датум.
idx_customer_order_customer_user_id_order_datetime v_customer_loyalty_full_v2, v_orders_full, v_reviews_full Пронаоѓање нарачки по клиент; поддршка за пристап по датум во рамки на клиентот.
idx_customer_company_id v_customer_loyalty_full_v2, v_orders_full Пронаоѓање клиенти по компанијата на која припаѓаат.

Заеднички индекси

Индекс Поврзана документација
idx_delivery_driver_user_id_delivery_date Индекси за нарачки и достави
idx_customer_order_customer_user_id_order_datetime Индекси за лојалност на клиентите
idx_customer_company_id Индекси за лојалност на клиентите

Колонски план

Индекс Табела Прва колона Следни колони Намена
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.
idx_delivery_driver_user_id_delivery_date delivery driver_user_id delivery_date Пронаоѓање достави по доставувач; во прегледите за нарачки и достави и по датум.
idx_customer_order_customer_user_id_order_datetime customer_order customer_user_id order_datetime DESC Пронаоѓање нарачки по клиент; поддршка за пристап по датум во рамки на клиентот.
idx_customer_company_id customer company_id — Пронаоѓање клиенти по компанијата на која припаѓаат.

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

Верификација

SELECT tablename, indexname, indexdef
FROM pg_indexes
WHERE schemaname = 'kbnteam'
  AND indexname IN (
    'idx_company_order_company_id',
    'idx_customer_order_comp_order_id',
    'idx_order_meal_order_id_meal_id',
    'idx_order_drink_order_id_drink_id',
    'idx_delivery_driver_user_id_delivery_date',
    'idx_customer_order_customer_user_id_order_datetime',
    'idx_customer_company_id'
)
ORDER BY tablename, indexname;

Проверката ги прикажува имињата и дефинициите. IF NOT EXISTS спречува повторно креирање под исто име, но не проверува дали постојната дефиниција е еднаква на наведената.

Влијание врз перформансите

Изборот меѓу секвенцијално читање, индексно читање и други планови зависи од обемот на податоците, селективноста на филтрите и статистиките. Индексите не гарантираат забрзување или отстранување на сортирањата и спојувањата. Плановите и времињата се утврдуваат со мерење.

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

Мерењата се евидентирани во DBeaver на 14 септември 2026 година. „Пред индексирање“ и „по индексирање“ ги означуваат групите наведени како „без индекси“ и „со индекси“ во евиденцијата. Точниот сет присутни индекси во секоја група не е евидентиран; „без индекси“ не потврдува отсуство на индекси од примарни и уникатни клучеви.

Наведените времиња се клиентски мерења од DBeaver, а не серверските Planning Time и Execution Time од EXPLAIN ANALYZE. Нема приложени планови, типови на скенирање или податоци за баферите. Вредностите се во милисекунди (ms).

Прашалникот и дополнителното тестирање се опишани во v_orders_full.

Измерен прашалник

SELECT * FROM kbnteam.v_orders_full
WHERE customer_user_id = 1202947 AND order_total >= 40;

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

Метрика Измерен резултат
Клиентско време (ms) 2598
Приказ на мерењето Време прикажано со резултатот во DBeaver
Прикажани / преземени редови 1
Planning Time / Execution Time од EXPLAIN Не се измерени
План, тип на скенирање и бафери Не се приложени

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

Метрика Измерен резултат
Клиентско време (ms) 2591
Приказ на мерењето Време прикажано со резултатот во DBeaver
Прикажани / преземени редови 1
Planning Time / Execution Time од EXPLAIN Не се измерени
План, тип на скенирање и бафери Не се приложени

Анализа на резултатите

Метрика Пред По Промена на времето
Клиентско време (ms) 2598 2591 -0,3%

Времето е пократко само за 7 ms (0,3%). Едно вакво мерење не покажува значајно практично забрзување. Измерениот услов е по клиент и минимален износ, без датумски опсег.

Промената се пресметува како 100 × (време по - време пред) / време пред. Негативна вредност значи пократко време, а позитивна подолго време. Процентот ја опишува разликата меѓу прикажаните вредности.

Ова се поединечни набљудувања. Не се евидентирани контролирани повторувања, исти услови за кеширање и оптоварување или точните дефиниции на присутните индекси. Затоа промената на времето не е доказ дека индексите се единствената причина. Не се приложени мерења за INSERT, UPDATE и DELETE.

Измерената разлика се однесува на целиот прашалник и двете означени состојби. Не е измерен одделниот придонес на секој индекс наведен на оваа страница.

Note: See TracWiki for help on using the wiki.