Spaces:
Running
Running
| -- Database indexes for conversation and message queries | |
| -- | |
| -- [Task]: T059 | |
| -- [From]: specs/004-ai-chatbot/tasks.md | |
| -- | |
| -- These indexes optimize common queries for: | |
| -- - Conversation lookup by user_id | |
| -- - Message lookup by conversation_id | |
| -- - Message ordering by created_at | |
| -- - Composite indexes for filtering | |
| -- Index on conversations for user lookup | |
| -- Optimizes: SELECT * FROM conversations WHERE user_id = ? | |
| CREATE INDEX IF NOT EXISTS idx_conversations_user_id | |
| ON conversations(user_id); | |
| -- Index on conversations for updated_at sorting (cleanup) | |
| -- Optimizes: SELECT * FROM conversations WHERE updated_at < ? (90-day cleanup) | |
| CREATE INDEX IF NOT EXISTS idx_conversations_updated_at | |
| ON conversations(updated_at); | |
| -- Composite index for user conversations ordered by activity | |
| -- Optimizes: SELECT * FROM conversations WHERE user_id = ? ORDER BY updated_at DESC | |
| CREATE INDEX IF NOT EXISTS idx_conversations_user_updated | |
| ON conversations(user_id, updated_at DESC); | |
| -- Index on messages for conversation lookup | |
| -- Optimizes: SELECT * FROM messages WHERE conversation_id = ? | |
| CREATE INDEX IF NOT EXISTS idx_messages_conversation_id | |
| ON messages(conversation_id); | |
| -- Index on messages for user lookup | |
| -- Optimizes: SELECT * FROM messages WHERE user_id = ? | |
| CREATE INDEX IF NOT EXISTS idx_messages_user_id | |
| ON messages(user_id); | |
| -- Index on messages for timestamp ordering | |
| -- Optimizes: SELECT * FROM messages WHERE conversation_id = ? ORDER BY created_at ASC | |
| CREATE INDEX IF NOT EXISTS idx_messages_created_at | |
| ON messages(created_at); | |
| -- Composite index for conversation message retrieval | |
| -- Optimizes: SELECT * FROM messages WHERE conversation_id = ? ORDER BY created_at ASC | |
| CREATE INDEX IF NOT EXISTS idx_messages_conversation_created | |
| ON messages(conversation_id, created_at ASC); | |
| -- Index on messages for role filtering | |
| -- Optimizes: SELECT * FROM messages WHERE conversation_id = ? AND role = ? | |
| CREATE INDEX IF NOT EXISTS idx_messages_conversation_role | |
| ON messages(conversation_id, role); | |
| -- Index on tasks for user lookup (if not exists) | |
| -- Optimizes: SELECT * FROM tasks WHERE user_id = ? | |
| CREATE INDEX IF NOT EXISTS idx_tasks_user_id | |
| ON tasks(user_id); | |
| -- Index on tasks for completion status filtering | |
| -- Optimizes: SELECT * FROM tasks WHERE user_id = ? AND completed = ? | |
| CREATE INDEX IF NOT EXISTS idx_tasks_user_completed | |
| ON tasks(user_id, completed); | |
| -- Index on tasks for due date filtering | |
| -- Optimizes: SELECT * FROM tasks WHERE user_id = ? AND due_date IS NOT NULL AND due_date < ? | |
| CREATE INDEX IF NOT EXISTS idx_tasks_due_date | |
| ON tasks(due_date) WHERE due_date IS NOT NULL; | |
| -- Composite index for task priority filtering | |
| -- Optimizes: SELECT * FROM tasks WHERE user_id = ? AND priority = ? | |
| CREATE INDEX IF NOT EXISTS idx_tasks_user_priority | |
| ON tasks(user_id, priority); | |
| -- Index on tasks for created_at sorting | |
| -- Optimizes: SELECT * FROM tasks WHERE user_id = ? ORDER BY created_at DESC | |
| CREATE INDEX IF NOT EXISTS idx_tasks_user_created | |
| ON tasks(user_id, created_at DESC); | |