{
  "license": "CC BY 4.0",
  "recipe": {
    "slug": "n-plus-one-database-queries",
    "title": "Detect N+1 Database Query Patterns",
    "testedWith": "Apache DataFusion 45.2.0",
    "lastReviewed": "2026-07-28"
  },
  "contract": {
    "tableName": "database_request_query_events",
    "schema": [
      {
        "name": "timestamp_utc",
        "type": "Timestamp",
        "description": "Query completion time in UTC."
      },
      {
        "name": "request_id",
        "type": "Utf8",
        "description": "Bounded request correlation identifier."
      },
      {
        "name": "route_template",
        "type": "Utf8",
        "description": "Stable application route."
      },
      {
        "name": "query_fingerprint",
        "type": "Utf8",
        "description": "Normalized query shape without parameters."
      },
      {
        "name": "sequence_in_request",
        "type": "Int64",
        "description": "Query order inside the request."
      },
      {
        "name": "duration_ms",
        "type": "Float64",
        "description": "Database operation duration."
      },
      {
        "name": "environment",
        "type": "Utf8",
        "description": "Deployment environment."
      }
    ]
  },
  "query": "WITH queries_per_request AS (\n  SELECT\n    route_template,\n    query_fingerprint,\n    request_id,\n    COUNT(*) AS executions_in_request\n  FROM database_request_query_events\n  WHERE timestamp_utc >= now() - INTERVAL '24 hours'\n    AND environment = 'production'\n  GROUP BY route_template, query_fingerprint, request_id\n)\nSELECT\n  route_template,\n  query_fingerprint,\n  COUNT(*) AS requests,\n  SUM(CASE WHEN executions_in_request >= 5 THEN 1 ELSE 0 END)\n    AS requests_with_repeats,\n  AVG(executions_in_request) AS average_executions_per_request,\n  MAX(executions_in_request) AS maximum_executions_in_request\nFROM queries_per_request\nGROUP BY route_template, query_fingerprint\nORDER BY requests_with_repeats DESC, route_template;",
  "fixtureKind": "reproducible",
  "inputRows": [
    {
      "timestamp_utc": "2026-07-28T17:59:00.000Z",
      "request_id": "checkout-1",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 1,
      "duration_ms": 12,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:58:00.000Z",
      "request_id": "checkout-1",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 2,
      "duration_ms": 15,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:57:00.000Z",
      "request_id": "checkout-1",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 3,
      "duration_ms": 18,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:56:00.000Z",
      "request_id": "checkout-1",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 4,
      "duration_ms": 21,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:55:00.000Z",
      "request_id": "checkout-1",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 5,
      "duration_ms": 24,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:54:00.000Z",
      "request_id": "checkout-1",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 6,
      "duration_ms": 27,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:53:00.000Z",
      "request_id": "checkout-2",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 1,
      "duration_ms": 12,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:52:00.000Z",
      "request_id": "checkout-2",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 2,
      "duration_ms": 15,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:51:00.000Z",
      "request_id": "checkout-2",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 3,
      "duration_ms": 18,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:50:00.000Z",
      "request_id": "checkout-2",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 4,
      "duration_ms": 21,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:49:00.000Z",
      "request_id": "checkout-2",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 5,
      "duration_ms": 24,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:48:00.000Z",
      "request_id": "checkout-3",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 1,
      "duration_ms": 12,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:47:00.000Z",
      "request_id": "profile-1",
      "route_template": "/api/profile",
      "query_fingerprint": "SELECT user WITH preferences",
      "sequence_in_request": 1,
      "duration_ms": 12,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:46:00.000Z",
      "request_id": "profile-2",
      "route_template": "/api/profile",
      "query_fingerprint": "SELECT user WITH preferences",
      "sequence_in_request": 1,
      "duration_ms": 12,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:45:00.000Z",
      "request_id": "profile-3",
      "route_template": "/api/profile",
      "query_fingerprint": "SELECT user WITH preferences",
      "sequence_in_request": 1,
      "duration_ms": 12,
      "environment": "production"
    }
  ],
  "illustrativeInputRows": [
    {
      "timestamp_utc": "2026-07-28T17:59:00.000Z",
      "request_id": "checkout-1",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 1,
      "duration_ms": 12,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:58:00.000Z",
      "request_id": "checkout-1",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 2,
      "duration_ms": 15,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:57:00.000Z",
      "request_id": "checkout-1",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 3,
      "duration_ms": 18,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:56:00.000Z",
      "request_id": "checkout-1",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 4,
      "duration_ms": 21,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:55:00.000Z",
      "request_id": "checkout-1",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 5,
      "duration_ms": 24,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:54:00.000Z",
      "request_id": "checkout-1",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 6,
      "duration_ms": 27,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:53:00.000Z",
      "request_id": "checkout-2",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 1,
      "duration_ms": 12,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:52:00.000Z",
      "request_id": "checkout-2",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 2,
      "duration_ms": 15,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:51:00.000Z",
      "request_id": "checkout-2",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 3,
      "duration_ms": 18,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:50:00.000Z",
      "request_id": "checkout-2",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 4,
      "duration_ms": 21,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:49:00.000Z",
      "request_id": "checkout-2",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 5,
      "duration_ms": 24,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:48:00.000Z",
      "request_id": "checkout-3",
      "route_template": "/api/checkout",
      "query_fingerprint": "SELECT line_items BY order_id",
      "sequence_in_request": 1,
      "duration_ms": 12,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:47:00.000Z",
      "request_id": "profile-1",
      "route_template": "/api/profile",
      "query_fingerprint": "SELECT user WITH preferences",
      "sequence_in_request": 1,
      "duration_ms": 12,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:46:00.000Z",
      "request_id": "profile-2",
      "route_template": "/api/profile",
      "query_fingerprint": "SELECT user WITH preferences",
      "sequence_in_request": 1,
      "duration_ms": 12,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:45:00.000Z",
      "request_id": "profile-3",
      "route_template": "/api/profile",
      "query_fingerprint": "SELECT user WITH preferences",
      "sequence_in_request": 1,
      "duration_ms": 12,
      "environment": "production"
    }
  ],
  "expectedOutput": {
    "columns": [
      "route_template",
      "query_fingerprint",
      "requests",
      "requests_with_repeats",
      "average_executions_per_request",
      "maximum_executions_in_request"
    ],
    "rows": [
      {
        "route_template": "/api/checkout",
        "query_fingerprint": "SELECT line_items BY order_id",
        "requests": 3,
        "requests_with_repeats": 2,
        "average_executions_per_request": 4,
        "maximum_executions_in_request": 6
      },
      {
        "route_template": "/api/profile",
        "query_fingerprint": "SELECT user WITH preferences",
        "requests": 3,
        "requests_with_repeats": 0,
        "average_executions_per_request": 1,
        "maximum_executions_in_request": 1
      }
    ]
  },
  "notes": [
    "The included synthetic input rows generate the expected output when timestamps are shifted into the documented query window.",
    "Run this fixture in the public browser SQL playground; the selected query executes locally with DuckDB-Wasm.",
    "Adapt time windows, thresholds, identities, and business definitions before operational use."
  ]
}