Spaces:
Paused
Paused
| -- 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; | |