"""analytics_event 活跃口径复合索引 Revision ID: analytics_active_idx Revises: 135e79414fd0 Create Date: 2026-07-18 17:35:00.000000 给 analytics_event 加活跃口径热点复合索引 (event, page, user_id, created_at): activity.active_event_condition 按 (event=show & page=home) ∪ 比价 ∪ 领券 过滤后 group by user_id、max(created_at)。覆盖索引让该聚合走 index-only,避免高频 show 事件全表扫。 ⚠️ 本分支迁移树有**既有多头**:135e79414fd0(不活跃两表)与 phone_rebind_log 同从 comparison_llm_cost 分叉,`alembic upgrade head` 会多头报错。本迁移挂在 135e79414fd0 一侧;集成到 main 时需 `alembic merge` 合并 phone_rebind_log 那个头(与本迁移无关的既有问题)。 """ from typing import Sequence, Union from alembic import op # revision identifiers, used by Alembic. revision: str = "analytics_active_idx" down_revision: Union[str, Sequence[str], None] = "135e79414fd0" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.create_index( "ix_analytics_event_active", "analytics_event", ["event", "page", "user_id", "created_at"], unique=False, ) def downgrade() -> None: op.drop_index("ix_analytics_event_active", table_name="analytics_event")