Database Indexes (migrations 006-009): - Add case-insensitive indexes for auth lookups (email, username) - Add composite indexes for task kanban queries - Add indexes for notification, document, and completion queries - Add unique index for active share codes - Remove redundant idx_share_code_active and idx_notification_user_sent Repository Optimizations: - Add FindResidenceIDsByUser() lightweight method (IDs only, no preloads) - Optimize GetResidenceUsers() with single UNION query (was 2 queries) - Optimize kanban completion preloads to minimal columns (id, task_id, completed_at) Service Optimizations: - Remove Category/Priority/Frequency preloads from task queries - Remove summary calculations from CRUD responses (client calculates) - Use lightweight FindResidenceIDsByUser() instead of full FindByUser() These changes reduce database load and response times for common operations. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
48 lines
1.9 KiB
SQL
48 lines
1.9 KiB
SQL
-- Additional performance optimization indexes
|
|
-- Migration: 008_additional_performance_indexes
|
|
|
|
-- =====================================================
|
|
-- KANBAN QUERY OPTIMIZATION
|
|
-- =====================================================
|
|
|
|
-- Composite index for kanban board queries
|
|
-- Covers: WHERE residence_id IN ? AND is_archived = false
|
|
-- with ordering by due_date, next_due_date
|
|
CREATE INDEX IF NOT EXISTS idx_task_kanban_composite
|
|
ON task_task (residence_id, is_archived, is_cancelled, next_due_date, due_date)
|
|
WHERE is_archived = false;
|
|
|
|
-- =====================================================
|
|
-- COMPLETION QUERY OPTIMIZATION
|
|
-- =====================================================
|
|
|
|
-- Ordering index for completion queries (most recent first)
|
|
CREATE INDEX IF NOT EXISTS idx_completion_task_date
|
|
ON task_taskcompletion (task_id, completed_at DESC);
|
|
|
|
-- =====================================================
|
|
-- SHARE CODE OPTIMIZATION
|
|
-- =====================================================
|
|
|
|
-- Unique index for active share code lookups
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_sharecode_code_active
|
|
ON residence_residencesharecode (code)
|
|
WHERE is_active = true;
|
|
|
|
-- =====================================================
|
|
-- RESIDENCE USER ACCESS OPTIMIZATION
|
|
-- =====================================================
|
|
|
|
-- Index for residence user membership queries (used by FindResidenceIDsByUser)
|
|
CREATE INDEX IF NOT EXISTS idx_residence_users_user_residence
|
|
ON residence_residence_users (user_id, residence_id);
|
|
|
|
-- =====================================================
|
|
-- TASK IN_PROGRESS QUERIES
|
|
-- =====================================================
|
|
|
|
-- Index for in_progress task queries (kanban "In Progress" column)
|
|
CREATE INDEX IF NOT EXISTS idx_task_in_progress
|
|
ON task_task (residence_id, in_progress)
|
|
WHERE in_progress = true AND is_cancelled = false AND is_archived = false;
|