<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Joins on Nalar</title>
    <link>https://nalar.dev/tags/joins/</link>
    <description>Recent content in Joins on Nalar</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 15 Sep 2026 00:00:00 +0700</lastBuildDate>
    <atom:link href="https://nalar.dev/tags/joins/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>PostgreSQL Join Collapse Bounds Planner Search</title>
      <link>https://nalar.dev/postgresql-join-collapse-bounds-planner-search/</link>
      <pubDate>Tue, 15 Sep 2026 00:00:00 +0700</pubDate>
      <guid>https://nalar.dev/postgresql-join-collapse-bounds-planner-search/</guid>
      <description>&lt;p&gt;PostgreSQL can reorder many joins instead of treating SQL text order as a fixed execution sequence. That freedom gives the planner more candidate plans, but the search space grows rapidly as a query brings more relations into one join problem. Two planner settings, &lt;code&gt;join_collapse_limit&lt;/code&gt; and &lt;code&gt;from_collapse_limit&lt;/code&gt;, place boundaries on how aggressively PostgreSQL flattens query structure before it searches for a plan.&lt;/p&gt;&#xA;&lt;p&gt;These limits are not execution-time row caps. They shape planner search. Changing them can alter planning time and can also alter the set of join orders available for consideration.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PostgreSQL Memoize Caches Parameterized Scan Results</title>
      <link>https://nalar.dev/postgresql-memoize-caches-parameterized-scan-results/</link>
      <pubDate>Mon, 14 Sep 2026 00:00:00 +0700</pubDate>
      <guid>https://nalar.dev/postgresql-memoize-caches-parameterized-scan-results/</guid>
      <description>&lt;p&gt;A nested-loop join can execute its inner plan many times. When that inner plan is parameterized by values from the outer side, repeated outer values can trigger the same inner lookup again and again. PostgreSQL can place a &lt;code&gt;Memoize&lt;/code&gt; node above the parameterized scan so a later lookup with the same parameter key can reuse rows already produced.&lt;/p&gt;&#xA;&lt;p&gt;Memoization does not change join semantics and it does not create a persistent cache. It is an executor-level optimization attached to a particular query plan, with entries that exist only for that execution.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
