Spaces:
Paused
Paused
File size: 2,409 Bytes
4a2ab42 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | -- Performance Optimization: Database Indexes (Updated for Actual Schema)
-- Created: 2025-12-19
-- Purpose: Add indexes for frequently queried columns that actually exist in the database
-- ===========================================
-- CASES TABLE INDEXES
-- ===========================================
-- Status-based queries (most common filter)
CREATE INDEX IF NOT EXISTS idx_cases_status ON cases(status);
-- Risk level filtering
CREATE INDEX IF NOT EXISTS idx_cases_risk_level ON cases(risk_level);
-- Chronological sorting (cases list, dashboards)
CREATE INDEX IF NOT EXISTS idx_cases_created_at ON cases(created_at DESC);
-- Assignment queries
CREATE INDEX IF NOT EXISTS idx_cases_assignee_id ON cases(assignee_id);
-- Team-based queries
CREATE INDEX IF NOT EXISTS idx_cases_team_id ON cases(team_id);
-- Composite index for common query pattern (status + risk_level combo)
CREATE INDEX IF NOT EXISTS idx_cases_status_risk ON cases(status, risk_level);
-- Customer lookups
CREATE INDEX IF NOT EXISTS idx_cases_customer_id ON cases(customer_id);
CREATE INDEX IF NOT EXISTS idx_cases_account_id ON cases(account_id);
-- ===========================================
-- EVIDENCE TABLE INDEXES (if table exists)
-- ===========================================
-- Case-based evidence retrieval
CREATE INDEX IF NOT EXISTS idx_evidence_case_id ON evidence(case_id);
--Chronological sorting
CREATE INDEX IF NOT EXISTS idx_evidence_created_at ON evidence(created_at DESC);
-- ===========================================
-- FRAUD RULES TABLE INDEXES (if exists)
-- ===========================================
-- Rule type and enabled status
CREATE INDEX IF NOT EXISTS idx_fraud_rules_enabled ON fraud_rules(enabled);
CREATE INDEX IF NOT EXISTS idx_fraud_rules_rule_type ON fraud_rules(rule_type);
-- ===========================================
-- USERS TABLE INDEXES
-- ===========================================
-- Email lookup (login)
CREATE INDEX IF NOT EXISTS idx_users_email ON users(email);
-- Role-based queries
CREATE INDEX IF NOT EXISTS idx_users_role ON users(role);
-- Username lookup
CREATE INDEX IF NOT EXISTS idx_users_username ON users(username);
-- ===========================================
-- VERIFICATION
-- ===========================================
-- Verify index creation
SELECT name, sql FROM sqlite_master WHERE type='index' AND name LIKE 'idx_%' ORDER BY name;
|