| Version 7 (modified by , 11 days ago) ( diff ) |
|---|
Индекси: v_contracts_revenue_index
| Својство | Вредност |
|---|---|
| Шема | kbnteam
|
| Област | Договори и приходи |
| Главен преглед | v_contracts_revenue |
Опис
Ова е една од трите групи со дополнително индексирање. Индексите се поставуваат врз изворните табели и го поддржуваат пребарувањето и поврзувањето на податоците.
Индекси во оваа група
| Индекс | Табела и колони | Намена |
|---|---|---|
idx_contract_company_id_rest_id | contract(company_id, rest_id) | Пребарување договори по компанија и ресторан. |
DDL
CREATE INDEX IF NOT EXISTS idx_contract_company_id_rest_id ON kbnteam.contract (company_id, rest_id);
Заедничка индексна поддршка
За поврзаните табели се користат и индексите опишани во 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_contract_company_id_rest_id',
'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_contracts_revenue и неговата главна табела contract.
SELECT
Мерењата се евидентирани во DBeaver. Времињата се во милисекунди (ms).
SELECT * FROM kbnteam.v_contracts_revenue WHERE company_id = 250;
| Метрика | Пред индексирање | По индексирање |
|---|---|---|
| Клиентско време (ms) | 2555 | 1966 |
| Вратени редови | 0 | 0 |
Измереното време е пократко за 589 ms, односно 23,1%. Двете извршувања враќаат нула редови, па резултатот се однесува на овој конкретен филтер.
INSERT и UPDATE
Тестирани се по еден INSERT и еден UPDATE врз kbnteam.contract, главната табела на погледот. Се тестира додавање договор и продолжување на неговиот рок.
| Операција | Execute (ms) | Fetch (ms) | Вратени редови |
|---|---|---|---|
| INSERT | 14 | 13 | 1 |
| UPDATE | 13 | 14 | 1 |
Execute е времето на извршување прикажано во DBeaver. Fetch вредностите се преземени од дополнетата евиденција на тестирањето. Ова се клиентски времиња, изразени во милисекунди.
Двете операции се успешни и враќаат по еден ред преку RETURNING. По мерењето промените се вратени со ROLLBACK.
INSERT и UPDATE се извршуваат со прифатлива брзина. Овие мерења ја опишуваат тестираната состојба на базата и не се споредба пред и по индексирање.
Резултатите се за целите прашалници, а не за одделниот придонес на секој индекс.
