<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Query Optimization on lqo.net</title>
    <link>https://lqo.net/tags/query-optimization/</link>
    <description>Recent content in Query Optimization on lqo.net</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 19 Oct 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://lqo.net/tags/query-optimization/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>First LQO Release Finds the PostgreSQL Queries a Planner Setting Makes Faster</title>
      <link>https://lqo.net/first-lqo-release-finds-the-postgresql-queries-a-planner-setting-makes-faster/</link>
      <pubDate>Mon, 19 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://lqo.net/first-lqo-release-finds-the-postgresql-queries-a-planner-setting-makes-faster/</guid>
      <description>&lt;p&gt;Every PostgreSQL database has a few queries the planner gets badly wrong. Not slow because they&amp;rsquo;re big. Slow because the planner guessed the wrong row count, picked a plan for ten rows, and got ten thousand. Finding them is usually an afternoon with &lt;code&gt;EXPLAIN ANALYZE&lt;/code&gt;, one query at a time.&lt;/p&gt;&#xA;&lt;p&gt;LQO 0.1 does that afternoon for a whole workload. Give it a server log or a file of queries, point it at a replica, and it runs each kind of query under PostgreSQL&amp;rsquo;s default plan and under a set of planner settings. Then it tells you which settings make which queries clearly faster, with the exact lines to use.&lt;/p&gt;</description>
    </item>
    <item>
      <title>LQO Finds Faster PostgreSQL Plans for 35 of 94 Join Order Benchmark Query Shapes</title>
      <link>https://lqo.net/lqo-finds-faster-postgresql-plans-for-35-of-94-join-order-benchmark-query-shapes/</link>
      <pubDate>Mon, 19 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://lqo.net/lqo-finds-faster-postgresql-plans-for-35-of-94-join-order-benchmark-query-shapes/</guid>
      <description>&lt;p&gt;The Join Order Benchmark is where query optimizers go to be embarrassed. It&amp;rsquo;s 113 queries over the IMDB movie database, real data with all its skew and correlated columns, and it was built to show how far a planner&amp;rsquo;s row estimates can drift from the truth. If a tool claims to find better plans, this is the first place anyone should look.&lt;/p&gt;&#xA;&lt;p&gt;So LQO 0.1.0 ran it, start to finish, on a GitHub runner: 4 cores, 15 GB of memory, PostgreSQL 16 with 5 GB of shared buffers. The 113 queries fold into 94 query shapes, because some JOB variants differ only in their constants. Each shape ran under the default plan and under LQO&amp;rsquo;s 13 standard hints, with a warm-up run and three timed runs per plan. The whole thing took 75 minutes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How LQO Was Tested, From Writes It Must Never Run to Traps It Must Find</title>
      <link>https://lqo.net/how-lqo-was-tested-from-writes-it-must-never-run-to-traps-it-must-find/</link>
      <pubDate>Sun, 18 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://lqo.net/how-lqo-was-tested-from-writes-it-must-never-run-to-traps-it-must-find/</guid>
      <description>&lt;p&gt;A tool that runs your queries on a database has two jobs, and the first one matters more. It must never do harm: no writes, no settings left behind, no runaway query. Then it must actually find something. LQO&amp;rsquo;s tests go after both, against a real PostgreSQL server rather than a mock.&lt;/p&gt;&#xA;&lt;p&gt;All 62 tests pass in the recorded run, on a two-core cloud machine with PostgreSQL 16. CI runs them again on every change against PostgreSQL 14 and 18, and runs the parts that need no server on macOS and Windows. The logs are &lt;a href=&#34;https://github.com/learned-query-optimizer/lqo/tree/main/test/results&#34;&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What Is a Learned Query Optimizer? Why PostgreSQL Picks Slow Plans and How to Steer It</title>
      <link>https://lqo.net/what-is-a-learned-query-optimizer-why-postgresql-picks-slow-plans-and-how-to-steer-it/</link>
      <pubDate>Sun, 18 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://lqo.net/what-is-a-learned-query-optimizer-why-postgresql-picks-slow-plans-and-how-to-steer-it/</guid>
      <description>&lt;p&gt;A query optimizer turns your SQL into a plan: which table to read first, which index to use, how to join one table to the next. A learned query optimizer is one that improves its choices from what actually happened when queries ran, instead of trusting its own predictions. The idea is older than it sounds, and it&amp;rsquo;s finally practical.&lt;/p&gt;&#xA;&lt;p&gt;To see why it matters, look at how an ordinary optimizer goes wrong.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
