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

16.1%

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.

11.71 / day

2.4%

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 23, 2026 2 14.5 ms 13.0 ms 16.0 ms
Sep 22, 2026 10 20.4 ms 3.0 ms 35.0 ms
Sep 21, 2026 9 20.78 ms 5.0 ms 35.0 ms
Sep 20, 2026 15 22.6 ms 5.0 ms 34.0 ms
Sep 19, 2026 12 14.83 ms 1.0 ms 32.0 ms
Sep 18, 2026 9 18.22 ms 2.0 ms 35.0 ms
Sep 17, 2026 11 10.36 ms 1.0 ms 27.0 ms
Sep 16, 2026 13 22.08 ms 2.0 ms 35.0 ms
Sep 15, 2026 8 24.5 ms 6.0 ms 50.0 ms
Sep 14, 2026 12 16.58 ms 1.0 ms 34.0 ms
Total of 15 record(s).

Normalized Query

SELECT id, name FROM users WHERE email = ?

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
SELECT
Tables
1
Joins
0
Complexity Score
3
Has LIMIT
No
Has ORDER BY
No
Has GROUP BY
No
Has Subqueries
No

Optimization Suggestions
  • Add single_column index: add_index :users, :email — Fast lookups for email = value queries
    add_index :users, :email

Execution Plan
2 | 0 | 216 | SCAN users

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/application_record.rb:12 34.0 140
app/jobs/cache_warming_job.rb:104 49.0 1
app/jobs/notification_job.rb:75 50.0 1
app/jobs/notification_job.rb:116 12.0 1
app/jobs/image_processing_job.rb:112 17.0 1
app/jobs/webhook_delivery_job.rb:54 17.0 1
app/jobs/cache_warming_job.rb:60 18.0 1
app/mailers/user_mailer.rb:79 18.0 1
app/jobs/notification_job.rb:27 4.0 1
app/jobs/analytics_job.rb:79 3.0 1
app/jobs/webhook_delivery_job.rb:71 7.0 1
app/jobs/cleanup_job.rb:26 25.0 1
app/jobs/cleanup_job.rb:118 17.0 1
app/jobs/import_job.rb:112 20.0 1
app/jobs/cache_warming_job.rb:38 26.0 1
app/jobs/webhook_delivery_job.rb:93 18.0 1
app/jobs/image_processing_job.rb:36 33.0 1
app/jobs/image_processing_job.rb:120 12.0 1
app/mailers/user_mailer.rb:43 23.0 1
app/jobs/notification_job.rb:48 50.0 1
app/jobs/report_generator_job.rb:60 20.0 1
app/jobs/report_generator_job.rb:10 9.0 1
app/jobs/cache_warming_job.rb:36 48.0 1
app/jobs/notification_job.rb:33 11.0 1
app/jobs/webhook_delivery_job.rb:96 48.0 1

Raw Data

{
  "query": {
    "id": 101,
    "normalized_sql": "SELECT id, name FROM users WHERE email = ?",
    "analyzed_at": "2026-09-23 07:02:22 UTC"
  },
  "performance": {
    "total_executions": 164,
    "p95_duration_ms": "35.0",
    "avg_duration_ms": 19.0427,
    "p95_row_count": null,
    "avg_row_count": null
  },
  "characteristics": {
    "query_type": "SELECT",
    "table_count": 1,
    "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": 3
  },
  "call_locations": [
    {
      "location": "app/models/application_record.rb:12",
      "count": 140,
      "p95_duration_ms": "34.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/cache_warming_job.rb:104",
      "count": 1,
      "p95_duration_ms": "49.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/notification_job.rb:75",
      "count": 1,
      "p95_duration_ms": "50.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/notification_job.rb:116",
      "count": 1,
      "p95_duration_ms": "12.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/image_processing_job.rb:112",
      "count": 1,
      "p95_duration_ms": "17.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/webhook_delivery_job.rb:54",
      "count": 1,
      "p95_duration_ms": "17.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/cache_warming_job.rb:60",
      "count": 1,
      "p95_duration_ms": "18.0",
      "p95_row_count": null
    },
    {
      "location": "app/mailers/user_mailer.rb:79",
      "count": 1,
      "p95_duration_ms": "18.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/notification_job.rb:27",
      "count": 1,
      "p95_duration_ms": "4.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/analytics_job.rb:79",
      "count": 1,
      "p95_duration_ms": "3.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/webhook_delivery_job.rb:71",
      "count": 1,
      "p95_duration_ms": "7.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/cleanup_job.rb:26",
      "count": 1,
      "p95_duration_ms": "25.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/cleanup_job.rb:118",
      "count": 1,
      "p95_duration_ms": "17.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/import_job.rb:112",
      "count": 1,
      "p95_duration_ms": "20.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/cache_warming_job.rb:38",
      "count": 1,
      "p95_duration_ms": "26.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/webhook_delivery_job.rb:93",
      "count": 1,
      "p95_duration_ms": "18.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/image_processing_job.rb:36",
      "count": 1,
      "p95_duration_ms": "33.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/image_processing_job.rb:120",
      "count": 1,
      "p95_duration_ms": "12.0",
      "p95_row_count": null
    },
    {
      "location": "app/mailers/user_mailer.rb:43",
      "count": 1,
      "p95_duration_ms": "23.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/notification_job.rb:48",
      "count": 1,
      "p95_duration_ms": "50.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/report_generator_job.rb:60",
      "count": 1,
      "p95_duration_ms": "20.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/report_generator_job.rb:10",
      "count": 1,
      "p95_duration_ms": "9.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/cache_warming_job.rb:36",
      "count": 1,
      "p95_duration_ms": "48.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/notification_job.rb:33",
      "count": 1,
      "p95_duration_ms": "11.0",
      "p95_row_count": null
    },
    {
      "location": "app/jobs/webhook_delivery_job.rb:96",
      "count": 1,
      "p95_duration_ms": "48.0",
      "p95_row_count": null
    }
  ],
  "n_plus_one": {
    "detected": false
  },
  "index_recommendations": [
    "add_index :users, :email",
    "add_index :users, [\"email\", \"id\", \"name\"], name: 'covering_idx_users_email'"
  ],
  "issues": [],
  "explain_plan": "2 | 0 | 216 | SCAN users"
}