PostgreSQLAdvanced
Query Optimization — EXPLAIN ANALYZE
ধীর query পড়া ও ঠিক করা — planner-এর জানালা EXP.ANALYZE।
5টি অংশবাংলা ভাষায়
EXPLAIN ANALYZE
SELECT u.name, COUNT(o.id)
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.name;Output-এ Seq Scan → Index Scan, cost, actual time, rows — সেখানেই ধীর হওয়ার কারণ।
- Seq Scan বড় table-এ — index দরকার
- নিশ্চিত করুন WHERE-এর column index-এ আছে
SELECT *বাদ; যতটুকু দরকার ঠিক ততটুকু- sargable শর্ত — function-এ column wrap (
WHERE price * 2 > x) index নষ্ট join, aggregate, CTE — প্রতিটিEXPLAIN-এ দেখুন;LIMITসতর্কভাবে
-- UPDATE planner stats (বড় বদলের পরে)
ANALYZE products;measure first
অনুমান নয় — EXPLAIN (ANALYZE, BUFFERS) দিয়ে verify। N+1 (loop-এ query) প্রায়ই ORM/app-আর অভিযোগ, database নয়।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।