Changes between Initial Version and Version 1 of CompanyBillingOverviewIndex


Ignore:
Timestamp:
05/10/26 14:43:37 (2 weeks ago)
Author:
185022
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CompanyBillingOverviewIndex

    v1 v1  
     1= Индекс: v_company_billing_overview_index =
     2
     3||= Датотека ||= `indexes/v_company_billing_overview_index.sql` ||
     4||= Шема ||= `kbnteam` ||
     5||= Поврзани прегледи ||= `v_company_billing_overview`, `v_contracts_revenue`, `v_company_users` ||
     6
     7== Опис ==
     8Два индекси за поддршка на прегледот `v_company_billing_overview`. `idx_contract_company_id` го поддржува CTE-то `company_contracts` (GROUP BY company_id), а `idx_customer_order_comp_order_id` го поддржува LEFT JOIN во CTE-то `invoice_totals`.
     9
     10== DDL ==
     11{{{
     12#!sql
     13-- indexes/v_company_billing_overview_index.sql
     14CREATE INDEX IF NOT EXISTS idx_contract_company_id
     15ON kbnteam.contract (company_id);
     16
     17CREATE INDEX IF NOT EXISTS idx_customer_order_comp_order_id
     18ON kbnteam.customer_order (comp_order_id);
     19}}}
     20
     21== Поддржани прегледи ==
     22||= Индекс ||= Прегледи ||= Цел ||
     23|| `idx_contract_company_id` || `v_company_billing_overview`, `v_company_users` || CTE `company_contracts` GROUP BY company_id; JOIN contract по company_id ||
     24|| `idx_customer_order_comp_order_id` || `v_company_billing_overview` и многу други || LEFT JOIN `customer_order` → `company_order` по `comp_order_id` ||
     25
     26== Колонски план ==
     27||= Индекс ||= Колона ||= Причина ||
     28|| `idx_contract_company_id` || `company_id` || Единечна колона — GROUP BY company_id во CTE `company_contracts` ||
     29|| `idx_customer_order_comp_order_id` || `comp_order_id` || FK JOIN — `customer_order.comp_order_id` → `company_order.comp_order_id` ||
     30
     31== Разлика помеѓу `idx_contract_company_id` и `idx_contract_company_id_rest_id` ==
     32||= Индекс ||= Дефиниран во ||= Колони ||= Употреба ||
     33|| `idx_contract_company_id` || `v_company_billing_overview_index.sql` | `(company_id)` || Единечна колона — само filteri по company_id ||
     34|| `idx_contract_company_id_rest_id` || `v_contracts_revenue_index.sql` || `(company_id, rest_id)` || Composite — JOIN и filter по company+restaurant ||
     35
     36PostgreSQL може да го користи `idx_contract_company_id_rest_id` и за прашалници со само `company_id` (leading column match), така да `idx_contract_company_id` е технички редундантен кога двата постојат. Сепак, единечниот индекс е покомпактен за само-company_id скенирање.
     37
     38== Верификација ==
     39{{{
     40#!sql
     41SELECT indexname, indexdef
     42FROM pg_indexes
     43WHERE schemaname = 'kbnteam'
     44  AND indexname IN (
     45      'idx_contract_company_id',
     46      'idx_customer_order_comp_order_id'
     47  );
     48}}}