wiki:DriverDeliveriesIndex

Version 6 (modified by 223235, 10 days ago) ( diff )

--

Индекси: v_driver_deliveries_index

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

Опис

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

Индекси во оваа група

Индекс Табела и колони Намена
idx_delivery_driver_user_id_delivery_date delivery(driver_user_id, delivery_date) Пребарување достави по доставувач и датум.

DDL

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

Заедничка индексна поддршка

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

Индекс Табела и колони Намена
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.

Проверка на индексите

SELECT tablename, indexname, indexdef
FROM pg_indexes
WHERE schemaname = 'kbnteam'
  AND indexname IN (
    'idx_delivery_driver_user_id_delivery_date',
    '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'
)
ORDER BY tablename, indexname;

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

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

Резултатите се однесуваат на 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.