Improving Query Performance in PostgreSQL
Amy McCarty
Instructor
What
Why
Where
ingredient | recipe |
---|---|
tomatoes | spaghetti & meatballs |
green onions | fried rice |
eggs | fried rice |
ground beef | spaghetti & meatballs |
pasta | spaghetti & meatballs |
rice | fried rice |
soy sauce | fried rice |
SELECT *
FROM cookbook
WHERE recipe = 'fried rice'
SELECT * FROM pg_indexes
schemaname | tablename | indexname | tablespace | indexdef |
---|---|---|---|---|
food | dinner | recipe_index | null | CREATE INDEX recipe_index ... |
CREATE INDEX recipe_index
ON cookbook (recipe);
CREATE INDEX CONCURRENTLY recipe_index
ON cookbook (recipe, serving_size);
Use an index
Avoid an index
Frequently updated tables
Query planner
EXPLAIN
SELECT *
FROM cookbook
Query Plan
Seq scan on cookbook (cost=0.00...22.70
rows = 1270 width = 36)
Improving Query Performance in PostgreSQL