CODEX_ADK/BACKEND/Codex.Dal/Migrations/20251027032413_AddPerformanceIndexes.cs
Svrnty a24f87a0d3 perf: Add database indexes and optimize queries for MVP
Performance improvements for local development:
- Add indexes: Agents.Name, Conversations.Title, AgentExecutions.CompletedAt, ConversationMessages.CreatedAt
- Remove redundant ConversationMessages index (covered by composite)
- Add .Take() limit to SendMessage context query to prevent fetching excessive history
- Downgrade Microsoft.Extensions.Http from 9.0.10 to 8.0.1 for .NET 8 compatibility

All query handlers already had .AsNoTracking() for read operations.

Impact: Faster search/filter operations even with 10-20 agents, prevents N+1 on long conversations.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 23:30:53 -04:00

64 lines
2.0 KiB
C#

using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Codex.Dal.Migrations
{
/// <inheritdoc />
public partial class AddPerformanceIndexes : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropIndex(
name: "IX_ConversationMessages_ConversationId_MessageIndex",
table: "ConversationMessages");
migrationBuilder.CreateIndex(
name: "IX_Conversations_Title",
table: "Conversations",
column: "Title");
migrationBuilder.CreateIndex(
name: "IX_ConversationMessages_CreatedAt",
table: "ConversationMessages",
column: "CreatedAt");
migrationBuilder.CreateIndex(
name: "IX_Agents_Name",
table: "Agents",
column: "Name");
migrationBuilder.CreateIndex(
name: "IX_AgentExecutions_CompletedAt",
table: "AgentExecutions",
column: "CompletedAt");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropIndex(
name: "IX_Conversations_Title",
table: "Conversations");
migrationBuilder.DropIndex(
name: "IX_ConversationMessages_CreatedAt",
table: "ConversationMessages");
migrationBuilder.DropIndex(
name: "IX_Agents_Name",
table: "Agents");
migrationBuilder.DropIndex(
name: "IX_AgentExecutions_CompletedAt",
table: "AgentExecutions");
migrationBuilder.CreateIndex(
name: "IX_ConversationMessages_ConversationId_MessageIndex",
table: "ConversationMessages",
columns: new[] { "ConversationId", "MessageIndex" });
}
}
}