Changes between Version 1 and Version 2 of DriverDeliveriesIndex


Ignore:
Timestamp:
09/14/26 00:47:04 (13 days ago)
Author:
223235
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DriverDeliveriesIndex

    v1 v2  
    1 = Индекс: v_driver_deliveries_index =
     1= Индекси: v_driver_deliveries_index =
    22
    3 ||= Датотека ||= `indexes/v_driver_deliveries_index.sql` ||
    4 ||= Шема ||= `kbnteam` ||
    5 ||= Поврзани прегледи ||= `v_driver_deliveries`, `v_orders_full`, `v_driver_lunch_timers` ||
     3||= Својство ||= Вредност ||
     4|| Шема || `kbnteam` ||
     5|| Област || Нарачки и достави ||
     6|| Главен преглед || [wiki:DriverDeliveriesView v_driver_deliveries] ||
    67
    78== Опис ==
    8 Пет индекси наменети главно за прегледот `v_driver_deliveries`. Покриваат: достави по возач и датум, возачи по ресторан, нарачки по компаниска нарачка, и агрегации на ставки (оброци/пијачи). Повеќето се споделени со `v_orders_full_index.sql`.
     9
     10Индексите го поддржуваат пристапот до податоците за нарачки и достави. Се поставуваат врз изворните табели и можат да се користат од повеќе прегледи.
     11
     12`company_order(delivery_id)` има уникатен индекс. Прегледот ги користи и индексите за нарачките преку `v_orders_full`.
    913
    1014== DDL ==
     15
    1116{{{
    1217#!sql
    13 -- indexes/v_driver_deliveries_index.sql
    1418CREATE INDEX IF NOT EXISTS idx_delivery_driver_user_id_delivery_date
    1519ON kbnteam.delivery (driver_user_id, delivery_date);
    16 
    17 CREATE INDEX IF NOT EXISTS idx_driver_rest_id
    18 ON kbnteam.driver (rest_id);
    19 
    20 CREATE INDEX IF NOT EXISTS idx_customer_order_comp_order_id
    21 ON kbnteam.customer_order (comp_order_id);
    22 
    23 CREATE INDEX IF NOT EXISTS idx_order_meal_order_id_meal_id
    24 ON kbnteam.order_meal (order_id, meal_id);
    25 
    26 CREATE INDEX IF NOT EXISTS idx_order_drink_order_id_drink_id
    27 ON kbnteam.order_drink (order_id, drink_id);
    2820}}}
    2921
    3022== Поддржани прегледи ==
    31 ||= Индекс ||= Прегледи ||= Цел ||
    32 || `idx_delivery_driver_user_id_delivery_date` || `v_driver_deliveries`, `v_orders_full` || WHERE driver_user_id + датумски опсег ||
    33 || `idx_driver_rest_id` || `v_driver_deliveries`, `v_driver_lunch_timers` || JOIN `driver ON drv.rest_id = r.rest_id` ||
    34 || `idx_customer_order_comp_order_id` || `v_driver_deliveries`, `v_orders_full`, `v_reviews_full`, др. || FK JOIN кон `company_order` ||
    35 || `idx_order_meal_order_id_meal_id` || `v_driver_deliveries`, `v_orders_full`, `v_contracts_revenue` || CTE `order_meals` GROUP BY ||
    36 || `idx_order_drink_order_id_drink_id` || `v_driver_deliveries`, `v_orders_full`, `v_contracts_revenue` || CTE `order_drinks` GROUP BY ||
     23
     24||= Индекс ||= Прегледи ||= Намена ||
     25|| `idx_company_order_company_id` || [wiki:OrdersFullView v_orders_full], [wiki:DriverDeliveriesView v_driver_deliveries], [wiki:ReviewsFullView v_reviews_full], [wiki:ContractsRevenueView v_contracts_revenue], [wiki:CompanyBillingOverviewView v_company_billing_overview] || Пронаоѓање компаниски нарачки по компанија. ||
     26|| `idx_customer_order_comp_order_id` || [wiki:OrdersFullView v_orders_full], [wiki:DriverDeliveriesView v_driver_deliveries], [wiki:ReviewsFullView v_reviews_full], [wiki:ContractsRevenueView v_contracts_revenue], [wiki:CompanyBillingOverviewView v_company_billing_overview] || Пронаоѓање клиентски нарачки по компаниска нарачка. ||
     27|| `idx_order_meal_order_id_meal_id` || [wiki:OrdersFullView v_orders_full], [wiki:DriverDeliveriesView v_driver_deliveries], [wiki:ContractsRevenueView v_contracts_revenue] || Пристап до јадењата на нарачката и групирање по order_id. ||
     28|| `idx_order_drink_order_id_drink_id` || [wiki:OrdersFullView v_orders_full], [wiki:DriverDeliveriesView v_driver_deliveries], [wiki:ContractsRevenueView v_contracts_revenue] || Пристап до пијалоците на нарачката и групирање по order_id. ||
     29|| `idx_delivery_driver_user_id_delivery_date` || [wiki:DriverDeliveriesView v_driver_deliveries], [wiki:OrdersFullView v_orders_full], [wiki:ReviewsFullView v_reviews_full] || Пронаоѓање достави по доставувач; во прегледите за нарачки и достави и по датум. ||
     30|| `idx_driver_rest_id` || [wiki:DriverLunchTimersView v_driver_lunch_timers], [wiki:DriverDeliveriesView v_driver_deliveries] || Пронаоѓање доставувачи по ресторан. ||
     31
     32== Заеднички индекси ==
     33
     34||= Индекс ||= Поврзана документација ||
     35|| `idx_company_order_company_id` || [wiki:OrdersFullIndex Индекси за нарачки и достави] ||
     36|| `idx_customer_order_comp_order_id` || [wiki:OrdersFullIndex Индекси за нарачки и достави] ||
     37|| `idx_order_meal_order_id_meal_id` || [wiki:OrdersFullIndex Индекси за нарачки и достави] ||
     38|| `idx_order_drink_order_id_drink_id` || [wiki:OrdersFullIndex Индекси за нарачки и достави] ||
     39|| `idx_driver_rest_id` || [wiki:DriverLunchTimersIndex Индекси за термини за ручек] ||
    3740
    3841== Колонски план ==
    39 ||= Индекс ||= Колона 1 ||= Колона 2 ||= Причина ||
    40 || `idx_delivery_driver_user_id_delivery_date` || `driver_user_id` || `delivery_date` || Филтрирање по возач во датумски опсег ||
    41 || `idx_driver_rest_id` || `rest_id` || — || JOIN driver.rest_id → restaurant.rest_id ||
    42 || `idx_customer_order_comp_order_id` || `comp_order_id` || — || FK JOIN кон company_order ||
    43 || `idx_order_meal_order_id_meal_id` || `order_id` || `meal_id` || CTE агрегација ||
    44 || `idx_order_drink_order_id_drink_id` || `order_id` || `drink_id` || CTE агрегација ||
     42
     43||= Индекс ||= Табела ||= Прва колона ||= Следни колони ||= Намена ||
     44|| `idx_company_order_company_id` || `company_order` || `company_id` || — || Пронаоѓање компаниски нарачки по компанија. ||
     45|| `idx_customer_order_comp_order_id` || `customer_order` || `comp_order_id` || — || Пронаоѓање клиентски нарачки по компаниска нарачка. ||
     46|| `idx_order_meal_order_id_meal_id` || `order_meal` || `order_id` || `meal_id` || Пристап до јадењата на нарачката и групирање по order_id. ||
     47|| `idx_order_drink_order_id_drink_id` || `order_drink` || `order_id` || `drink_id` || Пристап до пијалоците на нарачката и групирање по order_id. ||
     48|| `idx_delivery_driver_user_id_delivery_date` || `delivery` || `driver_user_id` || `delivery_date` || Пронаоѓање достави по доставувач; во прегледите за нарачки и достави и по датум. ||
     49|| `idx_driver_rest_id` || `driver` || `rest_id` || — || Пронаоѓање доставувачи по ресторан. ||
     50
     51Првата колона го определува вообичаениот почеток на пребарувањето со составен индекс. Присуството на други колони не значи дека индексот ги содржи сите податоци потребни за прегледот.
    4552
    4653== Верификација ==
     54
    4755{{{
    4856#!sql
    49 SELECT indexname, indexdef
     57SELECT tablename, indexname, indexdef
    5058FROM pg_indexes
    5159WHERE schemaname = 'kbnteam'
    5260  AND indexname IN (
    53       'idx_delivery_driver_user_id_delivery_date',
    54       'idx_driver_rest_id',
    55       'idx_customer_order_comp_order_id',
    56       'idx_order_meal_order_id_meal_id',
    57       'idx_order_drink_order_id_drink_id'
    58   );
     61    'idx_company_order_company_id',
     62    'idx_customer_order_comp_order_id',
     63    'idx_order_meal_order_id_meal_id',
     64    'idx_order_drink_order_id_drink_id',
     65    'idx_delivery_driver_user_id_delivery_date',
     66    'idx_driver_rest_id'
     67)
     68ORDER BY tablename, indexname;
    5969}}}
     70
     71Проверката ги прикажува имињата и дефинициите. IF NOT EXISTS спречува повторно креирање под исто име, но не проверува дали постојната дефиниција е еднаква на наведената.
     72
     73== Влијание врз перформансите ==
     74
     75Изборот меѓу секвенцијално читање, индексно читање и други планови зависи од обемот на податоците, селективноста на филтрите и статистиките. Индексите не гарантираат забрзување или отстранување на сортирањата и спојувањата. Плановите и времињата се утврдуваат со мерење.
     76
     77== Тестирање на перформанси ==
     78
     79Тест прашалниците за овој преглед се наведени во [wiki:DriverDeliveriesView v_driver_deliveries].
     80
     81=== Резултати пред индексирање ===
     82
     83||= Прашалник ||= Execution Time (ms) ||= План / забелешки ||
     84|| Тест 1: по доставувач и датум || ___ || ___ ||
     85|| Тест 2: по компаниска нарачка || ___ || ___ ||
     86
     87=== Резултати по индексирање ===
     88
     89||= Прашалник ||= Execution Time (ms) ||= План / забелешки ||
     90|| Тест 1: по доставувач и датум || ___ || ___ ||
     91|| Тест 2: по компаниска нарачка || ___ || ___ ||