-- Шаг 0.11 плана production-готовности: индексы для горячих путей. -- pg_trgm — trusted extension (PostgreSQL 13+), создаётся владельцем БД без суперпользователя. CREATE EXTENSION IF NOT EXISTS pg_trgm; -- Ускорение подстрокового поиска задач (ilike '%…%') без смены семантики: -- инвариант — поиск обязан находить совпадения внутри слов («омент» → «моментально»), -- поэтому триграммные GIN-индексы, а НЕ tsvector. CREATE INDEX IF NOT EXISTS tasks_title_trgm_idx ON tasks USING gin (title gin_trgm_ops); CREATE INDEX IF NOT EXISTS tasks_description_trgm_idx ON tasks USING gin (description gin_trgm_ops); -- Дельта-синхронизация (WHERE updated_at >= since) и сортировки по обновлению. CREATE INDEX IF NOT EXISTS tasks_org_updated_idx ON tasks (organization_id, updated_at DESC); CREATE INDEX IF NOT EXISTS tasks_form_updated_idx ON tasks (form_id, updated_at); -- История полей по задаче (карточка задачи, аудит). CREATE INDEX IF NOT EXISTS field_history_task_id_idx ON field_history (task_id); -- Поиск пользователя по email (логин, приглашения, DaData-подбор). CREATE INDEX IF NOT EXISTS users_email_idx ON users (email);