mock_sobes
← БД — Индексы (PostgreSQL)
middle correct_vs_wrong #38
Есть индекс `CREATE INDEX ON orders (user_id, status, created_at)`. Какие запросы будут им пользоваться, а какие — нет (по leftmost-rule)?
Вариант 1
-- Использует индекс:
WHERE user_id = 1                                       -- ✓ префикс
WHERE user_id = 1 AND status = 'paid'                   -- ✓ префикс
WHERE user_id = 1 AND status = 'paid' AND created_at > '...' -- ✓ полностью
WHERE user_id = 1 ORDER BY status, created_at DESC      -- ✓ + сортировка
WHERE user_id = 1 AND created_at > '...'                -- ⚠ частично
                                                        -- (по user_id, затем
                                                        --  filter по created_at)
Вариант 2
-- НЕ использует (или использует неэффективно):
WHERE status = 'paid'                          -- ✗ нет user_id
WHERE created_at > '...'                       -- ✗ нет user_id
WHERE status = 'paid' AND created_at > '...'   -- ✗ нет user_id
ORDER BY status                                -- ✗ для сортировки без WHERE
Чтобы решить вопрос и сохранить попытку — войди.