- Replaced multiple SQL queries with a single query utilizing Common Table Expressions (CTEs) for improved performance. - Streamlined the exclusion of existing proposals and active directors directly within the SQL query. - Enhanced logging for SQL queries and results, providing better traceability during proposal generation. - Simplified the process of calculating average knowledge for character proposals, ensuring more efficient data handling.
44 lines
1.7 KiB
SQL
44 lines
1.7 KiB
SQL
-- Migration: Add indexes for director proposals and character queries
|
|
-- Created: 2026-01-12
|
|
|
|
-- Index für schnelle Suche nach NPCs in einer Region (mit Altersbeschränkung)
|
|
CREATE INDEX IF NOT EXISTS idx_character_region_user_created
|
|
ON falukant_data.character (region_id, user_id, created_at)
|
|
WHERE user_id IS NULL;
|
|
|
|
-- Index für schnelle Suche nach NPCs ohne Altersbeschränkung
|
|
CREATE INDEX IF NOT EXISTS idx_character_region_user
|
|
ON falukant_data.character (region_id, user_id)
|
|
WHERE user_id IS NULL;
|
|
|
|
-- Index für Character-Suche nach user_id (wichtig für getFamily, getDirectorForBranch)
|
|
CREATE INDEX IF NOT EXISTS idx_character_user_id
|
|
ON falukant_data.character (user_id);
|
|
|
|
-- Index für Director-Proposals
|
|
CREATE INDEX IF NOT EXISTS idx_director_proposal_employer_character
|
|
ON falukant_data.director_proposal (employer_user_id, director_character_id);
|
|
|
|
-- Index für aktive Direktoren
|
|
CREATE INDEX IF NOT EXISTS idx_director_character_id
|
|
ON falukant_data.director (director_character_id);
|
|
|
|
-- Index für Director-Suche nach employer_user_id
|
|
CREATE INDEX IF NOT EXISTS idx_director_employer_user_id
|
|
ON falukant_data.director (employer_user_id);
|
|
|
|
-- Index für Knowledge-Berechnung
|
|
CREATE INDEX IF NOT EXISTS idx_knowledge_character_id
|
|
ON falukant_data.knowledge (character_id);
|
|
|
|
-- Index für Relationships (getFamily)
|
|
CREATE INDEX IF NOT EXISTS idx_relationship_character1_id
|
|
ON falukant_data.relationship (character1_id);
|
|
|
|
-- Index für ChildRelations (getFamily)
|
|
CREATE INDEX IF NOT EXISTS idx_child_relation_father_id
|
|
ON falukant_data.child_relation (father_id);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_child_relation_mother_id
|
|
ON falukant_data.child_relation (mother_id);
|