<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>ide99 Blog — sharp notes on PostgreSQL</title><description>EXPLAIN deep-dives, JSONB and pgvector tricks, Postgres operations, and what we&apos;re shipping in ide99 — the desktop PostgreSQL IDE.</description><link>https://ide99.io</link><language>en-us</language><copyright>© 2026 ide99</copyright><item><title>Reading a PostgreSQL EXPLAIN plan without guessing</title><link>https://ide99.io/blog/reading-a-postgres-explain-plan</link><guid isPermaLink="true">https://ide99.io/blog/reading-a-postgres-explain-plan</guid><description>EXPLAIN (ANALYZE, BUFFERS) shows what Postgres actually did, not what it guessed. Read the plan from the most-indented node outward, find the node with the highest self-time, and compare rows estimated vs rows actual. A Seq Scan on a small table is fine; on millions of rows on the hot path it&apos;s usually a missing index.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate><category>Performance</category><category>explain</category><category>indexing</category><category>query-planning</category><category>performance</category><author>exzvor</author></item><item><title>Working with JSONB in PostgreSQL, the right way</title><link>https://ide99.io/blog/working-with-jsonb-in-postgres</link><guid isPermaLink="true">https://ide99.io/blog/working-with-jsonb-in-postgres</guid><description>JSONB stores parsed, binary JSON you can index and query in place. Use the path operators (-&gt;, -&gt;&gt;, #&gt;&gt;) to read, the containment operator (@&gt;) with a GIN index to filter fast, and jsonb_set to update one key without rewriting the whole document. Prefer jsonb over json unless you need to preserve key order and whitespace.</description><pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate><category>JSONB</category><category>jsonb</category><category>indexing</category><category>gin</category><category>query-planning</category><author>exzvor</author></item><item><title>Autovacuum, explained for people who got paged</title><link>https://ide99.io/blog/autovacuum-explained</link><guid isPermaLink="true">https://ide99.io/blog/autovacuum-explained</guid><description>Autovacuum reclaims space from dead row versions left by MVCC and refreshes the statistics the planner relies on. It triggers per table when dead tuples cross a threshold (a base value plus a scale factor of the table size). On big, write-heavy tables the default scale factor is too lazy — lower it per table so vacuum runs more often, in smaller bites.</description><pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate><category>Operations</category><category>vacuum</category><category>autovacuum</category><category>bloat</category><category>operations</category><category>mvcc</category><author>exzvor</author></item></channel></rss>