wiki:ContractsRevenueIndex

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

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

Last modified 11 days ago Last modified on 09/16/26 11:56:28
Note: See TracWiki for help on using the wiki.