Индекси: v_contracts_revenue_index
Опис
Индексите го поддржуваат пристапот до податоците за договори и приходи. Се поставуваат врз изворните табели и можат да се користат од повеќе прегледи.
contract(company_id, rest_id) поддржува и услов само по company_id. Индексот со rest_id како прва колона ја поддржува другата насока на пребарување.
DDL
CREATE INDEX IF NOT EXISTS idx_contract_company_id_rest_id
ON kbnteam.contract (company_id, rest_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_contract_company_id_rest_id | v_contracts_revenue, v_company_billing_overview, v_driver_lunch_timers | Пребарување договори по компанија и ресторан и групирање по компанија.
|
idx_contract_rest_id_company_id | v_driver_lunch_timers, v_contracts_revenue | Пронаоѓање договори почнувајќи од ресторан.
|
Заеднички индекси
Колонски план
| Индекс | Табела | Прва колона | Следни колони | Намена
|
|---|
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_contract_company_id_rest_id | contract | company_id | rest_id | Пребарување договори по компанија и ресторан и групирање по компанија.
|
idx_contract_rest_id_company_id | contract | rest_id | 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_contract_company_id_rest_id',
'idx_contract_rest_id_company_id'
)
ORDER BY tablename, indexname;
Проверката ги прикажува имињата и дефинициите. IF NOT EXISTS спречува повторно креирање под исто име, но не проверува дали постојната дефиниција е еднаква на наведената.
Влијание врз перформансите
Изборот меѓу секвенцијално читање, индексно читање и други планови зависи од обемот на податоците, селективноста на филтрите и статистиките. Индексите не гарантираат забрзување или отстранување на сортирањата и спојувањата. Плановите и времињата се утврдуваат со мерење.
Тестирање на перформанси
Тест прашалниците за овој преглед се наведени во v_contracts_revenue.
Резултати пред индексирање
| Прашалник | Execution Time (ms) | План / забелешки
|
|---|
| Тест 1: по компанија | _ | _
|
| Тест 2: по ресторан | _ | _
|
Резултати по индексирање
| Прашалник | Execution Time (ms) | План / забелешки
|
|---|
| Тест 1: по компанија | _ | _
|
| Тест 2: по ресторан | _ | _
|