mirror of
https://github.com/fawney19/Aether.git
synced 2026-01-03 00:02:28 +08:00
database: add indexes for model alias resolution
- Create indexes on provider_model_name and provider_model_aliases - Optimize model lookup performance for direct match and alias resolution - Support efficient JSONB queries on provider_model_aliases
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
"""add_indexes_for_model_alias_resolution
|
||||
|
||||
Revision ID: 6d0a5273f0f1
|
||||
Revises: e9b3d63f0cbf
|
||||
Create Date: 2025-12-15 09:50:23.423477+00:00
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '6d0a5273f0f1'
|
||||
down_revision = 'e9b3d63f0cbf'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
"""应用迁移:升级到新版本"""
|
||||
# 为 Model 表添加索引,优化别名解析性能
|
||||
|
||||
# 1. provider_model_name 索引(支持精确匹配)
|
||||
op.create_index(
|
||||
"idx_model_provider_model_name",
|
||||
"Model",
|
||||
["provider_model_name"],
|
||||
unique=False,
|
||||
postgresql_where=sa.text("is_active = true"),
|
||||
)
|
||||
|
||||
# 2. provider_model_aliases JSONB GIN 索引(支持 JSONB 查询,仅 PostgreSQL)
|
||||
# GIN 索引可以加速 @> 操作符的查询
|
||||
op.execute(
|
||||
"""
|
||||
CREATE INDEX IF NOT EXISTS idx_model_provider_model_aliases_gin
|
||||
ON "Model" USING gin(provider_model_aliases)
|
||||
WHERE is_active = true
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
"""回滚迁移:降级到旧版本"""
|
||||
# 删除索引
|
||||
op.drop_index("idx_model_provider_model_name", table_name="Model")
|
||||
op.execute('DROP INDEX IF EXISTS idx_model_provider_model_aliases_gin')
|
||||
Reference in New Issue
Block a user