feat: refactor database access in analyticsStore to use executeAll and executeGet for improved query handling
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
-- Add composite index for analytics queries: every analytics query filters by
|
||||
-- guild_id + created_at range + deleted_at IS NULL.
|
||||
-- This single index covers getHourlyStats, getTopicTrends, getUserLeaderboard,
|
||||
-- getModerationStats, getActiveChannelCount, and getTopViolators.
|
||||
CREATE INDEX IF NOT EXISTS "idx_messages_guild_created"
|
||||
ON "messages" USING btree ("guild_id", "created_at");
|
||||
|
||||
-- Covering index for analytics queries that also filter by ai_status
|
||||
-- (flagged/warn/clean counts). This speeds up the GROUP BY ai_status aggregates.
|
||||
CREATE INDEX IF NOT EXISTS "idx_messages_guild_status_created"
|
||||
ON "messages" USING btree ("guild_id", "ai_status", "created_at");
|
||||
|
||||
-- Composite index for channel-scoped analytics queries
|
||||
-- Covers channel_id + thread_id OR filters used when a specific channel is selected
|
||||
CREATE INDEX IF NOT EXISTS "idx_messages_guild_channel_created"
|
||||
ON "messages" USING btree ("guild_id", "channel_id", "created_at");
|
||||
Reference in New Issue
Block a user