# Индексы для масштабированной БД (20k+ записей) from typing import Sequence, Union from alembic import op revision: str = "003_add_composite_indexes" down_revision: Union[str, None] = "002_add_indexes" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: # Partial index для активных машин MOBILEDE (is_sold = FALSE) # Ускоряет поиск при mark_sold операциях op.execute( 'CREATE INDEX IF NOT EXISTS "ix_MOBILEDE_cars_active_MOBILEDE" ' 'ON "MOBILEDE_cars" (origin_url) ' "WHERE is_sold = FALSE AND origin_id LIKE 'mobilede:%'" ) # Composite index для проверки дубликатов изображений op.execute( 'CREATE INDEX IF NOT EXISTS "ix_MOBILEDE_images_car_id_fullres" ' 'ON "MOBILEDE_images" (car_id, fullres_image)' ) # Index для быстрого поиска existing машин по origin_url op.execute( 'CREATE INDEX IF NOT EXISTS "ix_MOBILEDE_cars_origin_url_id" ' 'ON "MOBILEDE_cars" (origin_url, origin_id)' ) def downgrade() -> None: # Compatibility-only migration for shared production databases. pass