---
title: "query missing indexes"
description: "Queries filtering or joining on unindexed columns cause full table scans, which become exponentially slower as tables grow."
type: skill
canonical_url: https://claudary.paisolsolutions.com/skills/query-missing-indexes
source: "Claudary"
difficulty: intermediate
author: "Claude Code Knowledge Pack"
date: 2026-07-10T11:37:22.807Z
license: CC-BY-4.0
attribution: "query missing indexes — Claudary (https://claudary.paisolsolutions.com/skills/query-missing-indexes)"
---

# query missing indexes
Queries filtering or joining on unindexed columns cause full table scans, which become exponentially slower as tables grow.

## Overview

---
title: Add Indexes on WHERE and JOIN Columns
impact: CRITICAL
impactDescription: 100-1000x faster queries on large tables
tags: indexes, performance, sequential-scan, query-optimization
---

## Add Indexes on WHERE and JOIN Columns

Queries filtering or joining on unindexed columns cause full table scans, which become exponentially slower as tables grow.

**Incorrect (sequential scan on large table):**

```sql
-- No index on customer_id causes full table scan
select * from orders where customer_id = 123;

-- EXPLAIN shows: Seq Scan on orders (cost=0.00..25000.00 rows=100 width=85)
```

**Correct (index scan):**

```sql
-- Create index on frequently filtered column
create index orders_customer_id_idx on orders (customer_id);

select * from orders where customer_id = 123;

-- EXPLAIN shows: Index Scan using orders_customer_id_idx (cost=0.42..8.44 rows=100 width=85)
```

For JOIN columns, always index the foreign key side:

```sql
-- Index the referencing column
create index orders_customer_id_idx on orders (customer_id);

select c.name, o.total
from customers c
join orders o on o.customer_id = c.id;
```

Reference: [Query Optimization](https://supabase.com/docs/guides/database/query-optimization)

---

Source: [Claudary](https://claudary.paisolsolutions.com/skills/query-missing-indexes) · https://claudary.paisolsolutions.com
