Introduction
Partial indexes help speed up searches by indexing only the rows that meet a specific condition. This saves space and makes queries faster.
Jump into concepts and practice - no test required
CREATE INDEX index_name ON table_name(column_name) WHERE condition;
CREATE INDEX idx_active_users ON users(last_login) WHERE active = true;
CREATE INDEX idx_recent_orders ON orders(order_date) WHERE order_date > '2024-01-01';
CREATE INDEX idx_pending_tasks ON tasks(priority) WHERE status = 'pending';
CREATE TABLE employees ( id SERIAL PRIMARY KEY, name TEXT, department TEXT, active BOOLEAN ); INSERT INTO employees (name, department, active) VALUES ('Alice', 'Sales', true), ('Bob', 'Sales', false), ('Carol', 'HR', true), ('Dave', 'HR', false); CREATE INDEX idx_active_sales ON employees(name) WHERE department = 'Sales' AND active = true; EXPLAIN SELECT * FROM employees WHERE department = 'Sales' AND active = true;
WHERE clause in PostgreSQL?orders for rows where status = 'pending'?CREATE INDEX idx_active_users ON users (last_login) WHERE active = true;SELECT * FROM users WHERE active = true AND last_login > '2024-01-01';CREATE INDEX idx_recent_orders ON orders (order_date) WHERE order_date > CURRENT_DATE - INTERVAL '30 days';order_date > CURRENT_DATE - INTERVAL '30 days' are not using the index. What is the likely problem?products table filtering only active products with price < 100. Which partial index is best to create?