Индекс: 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 е особено корисен ако апликацијата додатно ги сортира нарачките по датум.