-- AI module performance indexes
|
-- MySQL repeatable script: create each index only when the same index name does not already exist.
|
-- If an existing index uses the same name but different columns, compare it manually before changing it.
|
|
set @db_name = database();
|
|
set @sql = if (
|
exists (
|
select 1
|
from information_schema.statistics
|
where table_schema = @db_name
|
and table_name = 'sys_ai_chat_session'
|
and index_name = 'idx_sys_ai_chat_session_user_prompt_active'
|
),
|
'select ''skip idx_sys_ai_chat_session_user_prompt_active''',
|
'create index idx_sys_ai_chat_session_user_prompt_active on sys_ai_chat_session (tenant_id, user_id, prompt_code, deleted, status, pinned, last_message_time, id)'
|
);
|
prepare stmt from @sql;
|
execute stmt;
|
deallocate prepare stmt;
|
|
set @sql = if (
|
exists (
|
select 1
|
from information_schema.statistics
|
where table_schema = @db_name
|
and table_name = 'sys_ai_chat_message'
|
and index_name = 'idx_sys_ai_chat_message_session_active_seq'
|
),
|
'select ''skip idx_sys_ai_chat_message_session_active_seq''',
|
'create index idx_sys_ai_chat_message_session_active_seq on sys_ai_chat_message (session_id, deleted, seq_no, id)'
|
);
|
prepare stmt from @sql;
|
execute stmt;
|
deallocate prepare stmt;
|
|
set @sql = if (
|
exists (
|
select 1
|
from information_schema.statistics
|
where table_schema = @db_name
|
and table_name = 'sys_ai_call_log'
|
and index_name = 'idx_sys_ai_call_log_tenant_status'
|
),
|
'select ''skip idx_sys_ai_call_log_tenant_status''',
|
'create index idx_sys_ai_call_log_tenant_status on sys_ai_call_log (tenant_id, deleted, status, id)'
|
);
|
prepare stmt from @sql;
|
execute stmt;
|
deallocate prepare stmt;
|
|
set @sql = if (
|
exists (
|
select 1
|
from information_schema.statistics
|
where table_schema = @db_name
|
and table_name = 'sys_ai_mcp_call_log'
|
and index_name = 'idx_sys_ai_mcp_call_log_call'
|
),
|
'select ''skip idx_sys_ai_mcp_call_log_call''',
|
'create index idx_sys_ai_mcp_call_log_call on sys_ai_mcp_call_log (call_log_id, tenant_id, id)'
|
);
|
prepare stmt from @sql;
|
execute stmt;
|
deallocate prepare stmt;
|
|
set @sql = if (
|
exists (
|
select 1
|
from information_schema.statistics
|
where table_schema = @db_name
|
and table_name = 'sys_ai_mcp_call_log'
|
and index_name = 'idx_sys_ai_mcp_call_log_tenant_status'
|
),
|
'select ''skip idx_sys_ai_mcp_call_log_tenant_status''',
|
'create index idx_sys_ai_mcp_call_log_tenant_status on sys_ai_mcp_call_log (tenant_id, status, id)'
|
);
|
prepare stmt from @sql;
|
execute stmt;
|
deallocate prepare stmt;
|
|
-- Deployment note:
|
-- Clear legacy AI cache keys before the new version takes traffic to avoid stale payload compatibility issues.
|