Индекс: v_customer_loyalty_full_v2_index
| Датотека | indexes/v_customer_loyalty_full_v2_index.sql
|
|---|---|
| Шема | kbnteam
|
| Поврзани прегледи | v_customer_loyalty_full_v2, v_customer_loyalty_full, v_orders_full
|
Опис
Единечен композитен индекс за поддршка на CTE-то order_stats во прегледот v_customer_loyalty_full_v2. Ги агрегира бројот на нарачки, вкупниот потрошен износ и датумот на последна нарачка по купувач. Колоната order_datetime DESC е додадена за поддршка на MAX(order_datetime) без Sort операции.
Истиот индекс е дефиниран и во v_orders_full_index.sql.
DDL
-- indexes/v_customer_loyalty_full_v2_index.sql CREATE INDEX IF NOT EXISTS idx_customer_order_customer_user_id_order_datetime ON kbnteam.customer_order (customer_user_id, order_datetime DESC);
Поддржани прегледи
| Преглед | Начин на употреба |
|---|---|
v_customer_loyalty_full_v2 | CTE order_stats — GROUP BY customer_user_id, MAX order_datetime
|
v_customer_loyalty_full | Вградено подпрашање — GROUP BY customer_user_id, MAX order_datetime
|
v_orders_full | WHERE customer_user_id = ? и ORDER BY order_datetime
|
Колонски план
| Колона | Позиција | Причина |
|---|---|---|
customer_user_id | 1-ва (leading) | Примарен GROUP BY клуч за агрегација на статистики по купувач |
order_datetime DESC | 2-ра | MAX(order_datetime) — DESC редослед го избегнува Sort операцијата |
Верификација
SELECT indexname, indexdef FROM pg_indexes WHERE schemaname = 'kbnteam' AND indexname = 'idx_customer_order_customer_user_id_order_datetime';
Очекувано влијание
При прашалници по конкретен customer_user_id (на пр. проверка на поени за верност при најавување), индексот го трансформира Seq Scan на customer_order во Index Scan. order_datetime DESC е особено корисен ако апликацијата додатно ги сортира нарачките по датум.
