<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Explain on Ivan Luminaria</title><link>https://ivanluminaria.com/it/tags/explain/</link><description>Recent content in Explain on Ivan Luminaria</description><generator>Hugo</generator><language>it</language><lastBuildDate>Tue, 28 Oct 2025 08:03:00 +0100</lastBuildDate><atom:link href="https://ivanluminaria.com/it/tags/explain/index.xml" rel="self" type="application/rss+xml"/><item><title>EXPLAIN ANALYZE non basta: come leggere davvero un piano di esecuzione PostgreSQL</title><link>https://ivanluminaria.com/it/posts/postgresql/explain-analyze-postgresql/</link><pubDate>Tue, 28 Oct 2025 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/it/posts/postgresql/explain-analyze-postgresql/</guid><description>&lt;p&gt;L&amp;rsquo;altro giorno un collega mi manda uno screenshot su Teams. Una query che gira su una tabella da 2 milioni di righe, 45 secondi di esecuzione. Mi scrive:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Ho fatto EXPLAIN ANALYZE, ma non capisco cosa c&amp;rsquo;è che non va. Il piano sembra corretto.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Spoiler: il piano non era affatto corretto. L&amp;rsquo;optimizer aveva scelto un &lt;span class="glossary-tip" tabindex="0" data-glossary-desc="Nested Loop Join — strategia di join che scansiona la tabella interna per ogni riga della tabella esterna, ideale per dataset piccoli con indice." data-glossary-url="https://ivanluminaria.com/it/glossary/nested-loop/" data-glossary-more="Leggi di più →"&gt;nested loop&lt;/span&gt;
 join dove serviva un &lt;span class="glossary-tip" tabindex="0" data-glossary-desc="Hash Join — strategia di join ottimizzata per grandi volumi di dati, basata su una hash table costruita in memoria." data-glossary-url="https://ivanluminaria.com/it/glossary/hash-join/" data-glossary-more="Leggi di più →"&gt;hash join&lt;/span&gt;
, e la ragione era banale — statistiche non aggiornate. Ma per arrivarci ho dovuto leggere il piano riga per riga, e lì mi sono reso conto che la maggior parte dei DBA che conosco usa EXPLAIN ANALYZE come un oracolo binario: se il tempo è alto, la query è lenta. Fine dell&amp;rsquo;analisi.&lt;/p&gt;</description></item></channel></rss>