wiki:DriverDeliveriesIndex

Version 5 (modified by 223235, 11 days ago) ( diff )

--

Индекси: v_driver_deliveries_index

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

Опис

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

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

DDL

CREATE INDEX IF NOT EXISTS idx_delivery_driver_user_id_delivery_date
ON kbnteam.delivery (driver_user_id, delivery_date);

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

Индекс Прегледи Намена
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_driver_rest_id v_driver_lunch_timers, v_driver_deliveries Пронаоѓање доставувачи по ресторан.

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

Индекс Поврзана документација
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_driver_rest_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_driver_rest_id driver rest_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_driver_rest_id'
)
ORDER BY tablename, indexname;

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

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

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

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

Резултатите се однесуваат на v_driver_deliveries и неговата главна табела delivery.

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 се извршуваат со прифатлива брзина. Овие мерења ја опишуваат тестираната состојба на базата и не се споредба пред и по индексирање.

Резултатите се за целите прашалници, а не за одделниот придонес на секој индекс.

Note: See TracWiki for help on using the wiki.