P95 Query Time

P95 Query Time

The 95th percentile database query duration — 95% of queries complete faster than this. Weighted by execution frequency across all queries. Slow queries are often caused by missing indexes or N+1 patterns.

34 ms

12.3%

Compared to previous 7 days

Execution Rate

Query Execution Rate

Total database queries executed over the last 14 days, expressed as an average rate. Spikes may indicate N+1 queries or inefficient data access patterns.

15.07 / day

11.6%

Compared to previous 7 days

Query Responses

Query Responses

This panel shows all executions of this query, including performance metrics, duration distribution, and query execution details.

Click marker to copy SHA
Time Period ▼ Executions Avg Duration Min Duration Max Duration
Sep 13, 2026 14 15.71 ms 2.0 ms 46.0 ms
Sep 12, 2026 18 18.61 ms 3.0 ms 36.0 ms
Sep 11, 2026 11 18.91 ms 1.0 ms 36.0 ms
Sep 10, 2026 11 26.36 ms 7.0 ms 45.0 ms
Sep 9, 2026 17 20.88 ms 5.0 ms 31.0 ms
Total of 15 record(s).

Normalized Query

UPDATE posts SET title = ?, content = ?, updated_at = ? WHERE id = ?

Diagnostics

Query Diagnostics

Automatically generated analysis for this query. Includes N+1 detection (from live request data), query characteristics, detected issues, optimization suggestions, and a database EXPLAIN plan. Click Re-analyze to regenerate.


Query Characteristics
Query Type
UPDATE
Tables
0
Joins
0
Complexity Score
1
Has LIMIT
No
Has ORDER BY
No
Has GROUP BY
No
Has Subqueries
No

Query Locations

Query Locations

Shows where in your codebase this query originates, based on the last 30 days of executions. P95 duration and row count highlight the worst-case performance at each call site.

Location P95 Duration (ms) P95 Row Count Count
app/models/post.rb:35 33.0 177
app/jobs/notification_job.rb:91 41.0 1
app/jobs/cache_warming_job.rb:118 8.0 1
app/jobs/notification_job.rb:41 38.0 1
app/jobs/cache_warming_job.rb:90 20.0 1
app/jobs/notification_job.rb:89 24.0 1
app/jobs/webhook_delivery_job.rb:50 2.0 1
app/jobs/cleanup_job.rb:103 22.0 1
app/jobs/cache_warming_job.rb:104 17.0 1
app/jobs/analytics_job.rb:116 3.0 1
app/jobs/notification_job.rb:119 18.0 1
app/jobs/cache_warming_job.rb:40 21.0 1
app/jobs/cache_warming_job.rb:20 23.0 1
app/mailers/user_mailer.rb:120 21.0 1
app/mailers/user_mailer.rb:55 45.0 1
app/mailers/user_mailer.rb:100 4.0 1
app/jobs/notification_job.rb:88 7.0 1
app/jobs/image_processing_job.rb:119 46.0 1
app/jobs/webhook_delivery_job.rb:72 26.0 1
app/jobs/cache_warming_job.rb:24 36.0 1
app/jobs/cache_warming_job.rb:13 9.0 1
app/jobs/data_export_job.rb:78 33.0 1
app/jobs/cache_warming_job.rb:21 35.0 1
app/jobs/cache_warming_job.rb:10 36.0 1
app/jobs/cache_warming_job.rb:66 44.0 1
app/jobs/cache_warming_job.rb:102 38.0 1
app/jobs/webhook_delivery_job.rb:46 16.0 1
app/jobs/notification_job.rb:110 42.0 1
app/jobs/cache_warming_job.rb:103 33.0 1
app/jobs/webhook_delivery_job.rb:54 7.0 1
app/jobs/notification_job.rb:28 45.0 1
app/jobs/image_processing_job.rb:77 29.0 1
app/jobs/notification_job.rb:21 27.0 1
app/jobs/data_export_job.rb:76 21.0 1
app/jobs/notification_job.rb:27 5.0 1

Raw Data

{
  "query": {
    "id": 76,
    "normalized_sql": "UPDATE posts SET title = ?, content = ?, updated_at = ? WHERE id = ?",
    "analyzed_at": "2026-09-23 06:02:25 UTC"
  },
  "performance": {
    "total_executions": 211,
    "p95_duration_ms": "35.0",
    "avg_duration_ms": 19.1564,
    "p95_row_count": null,
    "avg_row_count": null
  },
  "characteristics": {
    "query_type": "UPDATE",
    "table_count": 0,
    "join_count": 0,
    "where_clause_complexity": 1,
    "has_subqueries": false,
    "has_limit": false,
    "has_order_by": false,
    "has_group_by": false,
    "has_having": false,
    "has_distinct": false,
    "has_aggregations": false,
    "estimated_complexity": 1
  },
  "call_locations": [
    {
      "location": "app/models/post.rb:35",
      "count": 177,
      "p95_duration_ms": "33.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/notification_job.rb:91",
      "count": 1,
      "p95_duration_ms": "41.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/cache_warming_job.rb:118",
      "count": 1,
      "p95_duration_ms": "8.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/notification_job.rb:41",
      "count": 1,
      "p95_duration_ms": "38.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/cache_warming_job.rb:90",
      "count": 1,
      "p95_duration_ms": "20.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/notification_job.rb:89",
      "count": 1,
      "p95_duration_ms": "24.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/webhook_delivery_job.rb:50",
      "count": 1,
      "p95_duration_ms": "2.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/cleanup_job.rb:103",
      "count": 1,
      "p95_duration_ms": "22.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/cache_warming_job.rb:104",
      "count": 1,
      "p95_duration_ms": "17.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/analytics_job.rb:116",
      "count": 1,
      "p95_duration_ms": "3.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/notification_job.rb:119",
      "count": 1,
      "p95_duration_ms": "18.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/cache_warming_job.rb:40",
      "count": 1,
      "p95_duration_ms": "21.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/cache_warming_job.rb:20",
      "count": 1,
      "p95_duration_ms": "23.0",
      "p95_row_count": null
    },
    {
      "location": "app/mailers/user_mailer.rb:120",
      "count": 1,
      "p95_duration_ms": "21.0",
      "p95_row_count": null
    },
    {
      "location": "app/mailers/user_mailer.rb:55",
      "count": 1,
      "p95_duration_ms": "45.0",
      "p95_row_count": null
    },
    {
      "location": "app/mailers/user_mailer.rb:100",
      "count": 1,
      "p95_duration_ms": "4.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/notification_job.rb:88",
      "count": 1,
      "p95_duration_ms": "7.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/image_processing_job.rb:119",
      "count": 1,
      "p95_duration_ms": "46.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/webhook_delivery_job.rb:72",
      "count": 1,
      "p95_duration_ms": "26.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/cache_warming_job.rb:24",
      "count": 1,
      "p95_duration_ms": "36.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/cache_warming_job.rb:13",
      "count": 1,
      "p95_duration_ms": "9.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/data_export_job.rb:78",
      "count": 1,
      "p95_duration_ms": "33.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/cache_warming_job.rb:21",
      "count": 1,
      "p95_duration_ms": "35.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/cache_warming_job.rb:10",
      "count": 1,
      "p95_duration_ms": "36.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/cache_warming_job.rb:66",
      "count": 1,
      "p95_duration_ms": "44.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/cache_warming_job.rb:102",
      "count": 1,
      "p95_duration_ms": "38.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/webhook_delivery_job.rb:46",
      "count": 1,
      "p95_duration_ms": "16.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/notification_job.rb:110",
      "count": 1,
      "p95_duration_ms": "42.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/cache_warming_job.rb:103",
      "count": 1,
      "p95_duration_ms": "33.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/webhook_delivery_job.rb:54",
      "count": 1,
      "p95_duration_ms": "7.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/notification_job.rb:28",
      "count": 1,
      "p95_duration_ms": "45.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/image_processing_job.rb:77",
      "count": 1,
      "p95_duration_ms": "29.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/notification_job.rb:21",
      "count": 1,
      "p95_duration_ms": "27.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/data_export_job.rb:76",
      "count": 1,
      "p95_duration_ms": "21.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/notification_job.rb:27",
      "count": 1,
      "p95_duration_ms": "5.0",
      "p95_row_count": null
    }
  ],
  "n_plus_one": {
    "detected": false
  },
  "index_recommendations": [],
  "issues": []
}