Changes between Initial Version and Version 1 of CustomerLoyaltyFullIndex


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

--

Legend:

Unmodified
Added
Removed
Modified
  • CustomerLoyaltyFullIndex

    v1 v1  
     1= Индекс: v_customer_loyalty_full_v2_index =
     2
     3||= Датотека ||= `indexes/v_customer_loyalty_full_v2_index.sql` ||
     4||= Шема ||= `kbnteam` ||
     5||= Поврзани прегледи ||= `v_customer_loyalty_full_v2`, `v_customer_loyalty_full`, `v_orders_full` ||
     6
     7== Опис ==
     8Единечен композитен индекс за поддршка на CTE-то `order_stats` во прегледот `v_customer_loyalty_full_v2`. Ги агрегира бројот на нарачки, вкупниот потрошен износ и датумот на последна нарачка по купувач. Колоната `order_datetime DESC` е додадена за поддршка на `MAX(order_datetime)` без Sort операции.
     9
     10Истиот индекс е дефиниран и во `v_orders_full_index.sql`.
     11
     12== DDL ==
     13{{{
     14#!sql
     15-- indexes/v_customer_loyalty_full_v2_index.sql
     16CREATE INDEX IF NOT EXISTS idx_customer_order_customer_user_id_order_datetime
     17ON kbnteam.customer_order (customer_user_id, order_datetime DESC);
     18}}}
     19
     20== Поддржани прегледи ==
     21||= Преглед ||= Начин на употреба ||
     22|| `v_customer_loyalty_full_v2` || CTE `order_stats` — GROUP BY `customer_user_id`, MAX `order_datetime` ||
     23|| `v_customer_loyalty_full` || Вградено подпрашање — GROUP BY `customer_user_id`, MAX `order_datetime` ||
     24|| `v_orders_full` || WHERE `customer_user_id = ?` и ORDER BY `order_datetime` ||
     25
     26== Колонски план ==
     27||= Колона ||= Позиција ||= Причина ||
     28|| `customer_user_id` || 1-ва (leading) || Примарен GROUP BY клуч за агрегација на статистики по купувач ||
     29|| `order_datetime DESC` || 2-ра ||MAX(order_datetime) — DESC редослед го избегнува Sort операцијата ||
     30
     31== Верификација ==
     32{{{
     33#!sql
     34SELECT indexname, indexdef
     35FROM pg_indexes
     36WHERE schemaname = 'kbnteam'
     37  AND indexname = 'idx_customer_order_customer_user_id_order_datetime';
     38}}}
     39
     40== Очекувано влијание ==
     41При прашалници по конкретен `customer_user_id` (на пр. проверка на поени за верност при најавување), индексот го трансформира Seq Scan на `customer_order` во Index Scan. `order_datetime DESC` е особено корисен ако апликацијата додатно ги сортира нарачките по датум.