<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>ExoBench — PostgreSQL</title><description>PostgreSQL performance findings — query plans, index trade-offs, and planner behavior, measured at real data scales.</description><link>https://exobench.ai</link><language>en-us</language><dc:creator>Alexander Ioffe</dc:creator><item><title>What Does a Covering Index Cost You?</title><link>https://exobench.ai/blog/covering-index-write-cost</link><guid isPermaLink="true">https://exobench.ai/blog/covering-index-write-cost</guid><description>&apos;Covering indexes hurt your writes&apos; is an architectural maxim with no number attached. Here is the number: +28% on INSERTs, +25% on UPDATEs, 1.26x faster reads, and covering wins below ~4,300 writes per analytical read. Measured on PostgreSQL 17 at 2M rows.</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><dc:creator>Alexander Ioffe</dc:creator><category>sql</category><category>optimization</category><category>postgres</category><category>indexes</category><category>covering-index</category><category>explain-analyze</category><category>write-amplification</category><author>Alexander Ioffe</author></item><item><title>JSONB Paths or GIN or Columns?</title><link>https://exobench.ai/blog/jsonb-paths-or-gin-or-columns</link><guid isPermaLink="true">https://exobench.ai/blog/jsonb-paths-or-gin-or-columns</guid><description>Columns beat JSONB+GIN at everything except multi-key containment on PostgreSQL 17</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><dc:creator>Alexander Ioffe</dc:creator><category>sql</category><category>optimization</category><category>postgres</category><category>explain-analyze</category><category>jsonb</category><category>indexing</category><author>Alexander Ioffe</author></item><item><title>How Fast Are Postgres 19 Graph Queries? Part 1: What Are They Actually Doing?</title><link>https://exobench.ai/blog/pg19-graph-queries-part-1</link><guid isPermaLink="true">https://exobench.ai/blog/pg19-graph-queries-part-1</guid><description>Postgres 19 adds SQL/PGQ graph queries. Measured against a PostgreSQL 19beta1 build, the fixed-depth graph query compiles to the exact same plan as a hand-written join, and the variable-depth traversal that graph databases were built for still falls to a recursive CTE. Apache AGE runs the same indexed traversal under a Cypher wrapper. Numbers from ExoBench in local mode.</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><dc:creator>Alexander Ioffe</dc:creator><category>postgres</category><category>postgres-19</category><category>graph</category><category>sql-pgq</category><category>graph-table</category><category>apache-age</category><category>recursive-cte</category><category>explain-analyze</category><category>neo4j</category><author>Alexander Ioffe</author></item><item><title>Why Does PostgreSQL Skip My Index?</title><link>https://exobench.ai/blog/postgres-default-from-2002</link><guid isPermaLink="true">https://exobench.ai/blog/postgres-default-from-2002</guid><description>...because your vendor&apos;s Cost Model Is from 2002. Since random_page_cost = 4.0 is for spinning disks and hasn&apos;t changed in 25 years, setting it to 1.1 cuts this query from 125.98ms to 68.69ms.</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><dc:creator>Alexander Ioffe</dc:creator><category>sql</category><category>optimization</category><category>postgres</category><category>explain-analyze</category><category>planner</category><category>random_page_cost</category><author>Alexander Ioffe</author></item></channel></rss>