<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SQL Authority with Pinal Dave</title>
	<atom:link href="https://blog.sqlauthority.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.sqlauthority.com/</link>
	<description>SQL Server Performance Tuning Expert</description>
	<lastBuildDate>Sat, 19 Sep 2026 02:23:27 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://blog.sqlauthority.com/wp-content/uploads/2016/04/pinalsmall.jpg</url>
	<title>SQL Authority with Pinal Dave</title>
	<link>https://blog.sqlauthority.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">107185061</site>	<item>
		<title>Navier-Stokes Problem: What It Is and What AI Found</title>
		<link>https://blog.sqlauthority.com/2026/09/18/navier-stokes-problem-solved-by-ai/</link>
					<comments>https://blog.sqlauthority.com/2026/09/18/navier-stokes-problem-solved-by-ai/#respond</comments>
		
		<dc:creator><![CDATA[Pinal Dave]]></dc:creator>
		<pubDate>Fri, 18 Sep 2026 01:30:31 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Mathematics]]></category>
		<guid isPermaLink="false">https://blog.sqlauthority.com/?p=203520</guid>

					<description><![CDATA[<p>The Navier-Stokes problem in plain words: what the famous fluid question asks, what AI says it found, and why it is not official yet.</p>
<p>First appeared on <a href="https://blog.sqlauthority.com/2026/09/18/navier-stokes-problem-solved-by-ai/">Navier-Stokes Problem: What It Is and What AI Found</a></p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><strong>The Navier-Stokes problem starts with a cup of tea. Stir it, pull out the spoon, and watch the swirl slowly settle. The math that describes that swirl is about two hundred years old. For about ninety years, nobody could answer one question about it.</strong></p>
<p style="text-align: justify;">On September 8, 2026, <strong><a rel="nofollow noopener" target="_blank" href="https://openai.com/index/navier-stokes-solution/">OpenAI announced</a></strong> that its AI had found the answer.</p>
<figure><img class="wp-image-203522" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/stirring-tea-optimized.webp" alt="Three views of tea: stirring with a spoon, swirling after removal, and gradually settling." width="1536" height="1024" fetchpriority="high" decoding="async" style="max-width:100%;height:auto;" srcset="https://blog.sqlauthority.com/wp-content/uploads/2026/09/stirring-tea-optimized.webp 1536w, https://blog.sqlauthority.com/wp-content/uploads/2026/09/stirring-tea-optimized-500x333.webp 500w, https://blog.sqlauthority.com/wp-content/uploads/2026/09/stirring-tea-optimized-800x533.webp 800w, https://blog.sqlauthority.com/wp-content/uploads/2026/09/stirring-tea-optimized-600x400.webp 600w" sizes="(max-width: 1536px) 100vw, 1536px" /><figcaption>Stir, remove the spoon, let it settle.</figcaption></figure>
<h2>The problem</h2>
<p style="text-align: justify;">The Navier-Stokes equations describe how fluids move. Water in a pipe, air over a wing, tea in a cup. Engineers use them to design airplanes and cars, and weather forecasts lean on them too. They even account for viscosity, the thickness that makes honey pour slower than water.</p>
<p style="text-align: justify;">Picture a map covered in little arrows. Each arrow shows which way the fluid is moving at that spot, and how fast. The equations tell you how every arrow changes over time.</p>
<figure><img class="wp-image-203523" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/water-is-a-crowd-optimized.webp" alt="Conceptual diagram comparing separate fluid molecules with a continuous map of arrows showing direction and speed." width="1920" height="1152" loading="lazy" decoding="async" style="max-width:100%;height:auto;" srcset="https://blog.sqlauthority.com/wp-content/uploads/2026/09/water-is-a-crowd-optimized.webp 1920w, https://blog.sqlauthority.com/wp-content/uploads/2026/09/water-is-a-crowd-optimized-500x300.webp 500w, https://blog.sqlauthority.com/wp-content/uploads/2026/09/water-is-a-crowd-optimized-800x480.webp 800w, https://blog.sqlauthority.com/wp-content/uploads/2026/09/water-is-a-crowd-optimized-600x360.webp 600w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /><figcaption>The equations follow the motion at each spot instead of tracking every molecule.</figcaption></figure>
<p style="text-align: justify;">The famous question sounds almost too easy. If a flow starts out smooth, does it stay smooth forever? Or can the math break, with the speed at one spot shooting to infinity in a finite time?</p>
<p style="text-align: justify;">That kind of break is called a <strong>singularity</strong>. In 2000, the Clay Mathematics Institute made the question one of its seven Millennium Prize Problems. A proof in either direction was worth a million dollars. Nobody collected.</p>
<figure><img class="wp-image-203524" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/the-speedometer-optimized.webp" alt="Illustrative curves compare a speed that stays bounded with one that grows without bound at a finite time. These are not simulation results." width="1920" height="1152" loading="lazy" decoding="async" style="max-width:100%;height:auto;" srcset="https://blog.sqlauthority.com/wp-content/uploads/2026/09/the-speedometer-optimized.webp 1920w, https://blog.sqlauthority.com/wp-content/uploads/2026/09/the-speedometer-optimized-500x300.webp 500w, https://blog.sqlauthority.com/wp-content/uploads/2026/09/the-speedometer-optimized-800x480.webp 800w, https://blog.sqlauthority.com/wp-content/uploads/2026/09/the-speedometer-optimized-600x360.webp 600w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /><figcaption>Sketches of the two possibilities, not simulation results.</figcaption></figure>
<h2>The solution</h2>
<p style="text-align: justify;">OpenAI&#8217;s answer: the math can break. The company says about 10,000 AI agents worked on it for 88 hours.</p>
<p style="text-align: justify;">Their example starts with fluid sitting perfectly still. A smooth outside force keeps pushing on it. A spinning core forms, then stretches and gets thinner. As it gets thinner, it spins faster, like a figure skater pulling in their arms.</p>
<p style="text-align: justify;">A real skater runs out of arm. In the math, the core keeps shrinking, and within a finite time its speed has no limit. The total energy stays finite the whole time. All that speed piles into one shrinking spot. Viscosity keeps trying to smooth things out. It loses.</p>
<figure><img class="wp-image-203525" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/thinner-means-faster-optimized.webp" alt="Three conceptual panels show a swirl stretching into a narrower core. The drawing is not to scale and does not represent the proof." width="1920" height="1152" loading="lazy" decoding="async" style="max-width:100%;height:auto;" srcset="https://blog.sqlauthority.com/wp-content/uploads/2026/09/thinner-means-faster-optimized.webp 1920w, https://blog.sqlauthority.com/wp-content/uploads/2026/09/thinner-means-faster-optimized-500x300.webp 500w, https://blog.sqlauthority.com/wp-content/uploads/2026/09/thinner-means-faster-optimized-800x480.webp 800w, https://blog.sqlauthority.com/wp-content/uploads/2026/09/thinner-means-faster-optimized-600x360.webp 600w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /><figcaption>A sketch of the reported mechanism. Not to scale.</figcaption></figure>
<p style="text-align: justify;">OpenAI also released a version of the proof in Lean, a language that lets a computer check every step. People still have to confirm that the statement it checked matches the real question.</p>
<h2>Is it official?</h2>
<p style="text-align: justify;">Not yet. As I write this, the Clay Mathematics Institute still lists the problem as unsolved. Its rules say the proof must appear in a peer-reviewed journal. Then it has to hold up for two years before any prize.</p>
<p style="text-align: justify;">OpenAI&#8217;s example also needs that outside force. The prize rules allow it, but many mathematicians say the version they care about most has no outside force. Expect that argument to run for a while.</p>
<p style="text-align: justify;">And no, nothing in your kitchen is about to reach infinite speed. That only happens inside the equations.</p>
<p style="text-align: justify;">One more thing before you go back to your tea. In my essay <strong><a target="_blank" rel="noopener" href="https://pinaldave.com/blog/ai-verification-bottleneck.html">Verification Is the New Bottleneck</a></strong>, I argue that making the work is now the easy half. Deciding whether to trust it is the real job. The Navier-Stokes announcement is the same story, with a million dollars riding on it.</p>
<p style="text-align: justify;">That essay is one of thirty in my book <strong>AI: Nobody&#8217;s in There. But we&#8217;re still in here.</strong> Every essay is free to read at <strong><a rel="noopener" target="_blank" href="https://pinaldave.com/blog/index.html">pinaldave.com</a></strong>. There is also a paperback on <strong><a rel="nofollow noopener" target="_blank" href="https://www.amazon.com/dp/B0H4T6W21S">Amazon</a></strong>, if you would rather hold something real.</p>
<p style="text-align: justify;"><strong>The announcement is not the finish line, it is where the checking starts.</strong></p>
<p style="text-align: justify;">Published by <strong>Pinal Dave</strong> on <a href="https://blog.sqlauthority.com/">SQLAuthority</a>. More of my work at <a href="https://pinaldave.com/" target="_blank" rel="noopener">pinaldave.com</a>.</p>
<p>First appeared on <a href="https://blog.sqlauthority.com/2026/09/18/navier-stokes-problem-solved-by-ai/">Navier-Stokes Problem: What It Is and What AI Found</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.sqlauthority.com/2026/09/18/navier-stokes-problem-solved-by-ai/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">203520</post-id>	</item>
		<item>
		<title>Your Index Rebuild Maintenance Plan Is Rebuilding Indexes Nobody Uses</title>
		<link>https://blog.sqlauthority.com/2026/09/17/your-index-rebuild-maintenance-plan-is-rebuilding-indexes-nobody-uses/</link>
					<comments>https://blog.sqlauthority.com/2026/09/17/your-index-rebuild-maintenance-plan-is-rebuilding-indexes-nobody-uses/#respond</comments>
		
		<dc:creator><![CDATA[Pinal Dave]]></dc:creator>
		<pubDate>Thu, 17 Sep 2026 01:30:26 +0000</pubDate>
				<category><![CDATA[SQL Performance]]></category>
		<category><![CDATA[Maintenance Plan]]></category>
		<category><![CDATA[SQL Index]]></category>
		<category><![CDATA[SQL Statistics]]></category>
		<guid isPermaLink="false">https://blog.sqlauthority.com/?p=203459</guid>

					<description><![CDATA[<p>Your index rebuild maintenance plan takes four hours every Sunday, fills the log and delays the backup. It may be buying you far less than everybody assumes.</p>
<p>First appeared on <a href="https://blog.sqlauthority.com/2026/09/17/your-index-rebuild-maintenance-plan-is-rebuilding-indexes-nobody-uses/">Your Index Rebuild Maintenance Plan Is Rebuilding Indexes Nobody Uses</a></p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><strong>Your index rebuild maintenance plan runs every Sunday night, takes four hours, fills your transaction log, delays your backup, and may be buying you a great deal less than everybody assumes.</strong></p>
<p style="text-align: justify;">I am not going to tell you to turn it off blindly. I am going to tell you what it is actually doing, so you can measure whether it deserves those four hours.</p>
<p style="text-align: justify;"><img decoding="async" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/raked-gravel-at-night.png" alt="A gravel driveway raked into flawless parallel lines at night with no car and a dark house" width="3840" height="2160" /></p>
<h3 style="text-align: justify;">The Thing Everybody Believes</h3>
<p style="text-align: justify;">Fragmentation is bad, so we defragment. It sounds obviously correct, and for a long time it mostly was.</p>
<p style="text-align: justify;">That belief was built in the era of spinning disks. Reading pages that sat next to each other was dramatically faster than reading pages scattered across a platter, because a physical arm had to move.</p>
<p style="text-align: justify;">On flash-backed storage, the penalty for scattered reads can be much smaller. If the pages are already in the buffer pool, SQL Server need not fetch them from storage at all. Page density still matters: half-empty pages take up memory too.</p>
<p style="text-align: justify;">So one historical reason for rebuilding often matters less than it once did, while the job itself stayed.</p>
<p style="text-align: justify;"><img decoding="async" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/order-vs-fullness.png" alt="Four cases of index pages: in order or out of order, crossed with pages full or half empty, with only the half empty cases marked as costly" width="3840" height="2160" /></p>
<h3 style="text-align: justify;">What the Rebuild Is Really Giving You</h3>
<p style="text-align: justify;">Two benefits are commonly credited to the wrong cause, and it is worth separating them.</p>
<p style="text-align: justify;"><strong>Page density.</strong><span> </span>Order and fullness are two different measurements. If pages holding the same rows are half empty, a scan reads roughly twice as many pages. Those pages take twice the room in memory too. A rebuild packs them back up. That is a real win, and it is why I still rebuild some things.</p>
<p style="text-align: justify;">One caveat. A lower fill factor reserves that space on purpose. Low density only earns a rebuild once it lines up with a workload cost you can point at.</p>
<p style="text-align: justify;"><img decoding="async" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/page-density.png" alt="Fourteen half full data pages above, the same rows packed into seven full pages below" width="3840" height="2160" /></p>
<p style="text-align: justify;"><strong>Statistics.</strong><span> </span>A regular, nonpartitioned rowstore rebuild also updates the index statistics by reading every row. I checked this rather than repeating it. I sampled a two hundred thousand row index at ten percent. rows_sampled came back as 56,045, nearer twenty eight percent, because SQL Server samples whole pages. After an ALTER INDEX REBUILD the same statistic showed 200,000. Every row, without a separate statistics job.</p>
<p style="text-align: justify;">Partitioned or resumable rebuilds can use sampled statistics instead. Rebuilding also leaves separate column statistics alone.</p>
<p style="text-align: justify;">Here is the uncomfortable part: sometimes that statistics update is the benefit people are seeing. The query that got faster after the weekend job may not have improved because pages were reordered. It may have improved because the optimizer received fresher or more thoroughly sampled information about that index.</p>
<p style="text-align: justify;">If that is what is helping you, test a targeted statistics update separately. It can deliver the same improvement with much less work than rebuilding the index.</p>
<p style="text-align: justify;"><img loading="lazy" decoding="async" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/sample-vs-fullscan.png" alt="A bar showing 56,045 rows sampled against a full bar of 200,000 rows read by the index rebuild" width="3840" height="2160" /></p>
<h3 style="text-align: justify;">What It Costs You</h3>
<p style="text-align: justify;">In full recovery, an index rebuild is fully logged, and rebuilding a fifty gigabyte index generates a very large amount of transaction log. In simple or bulk-logged recovery, an offline rebuild can be minimally logged.</p>
<p style="text-align: justify;">Minimally logged is not log free. The operation still needs room to finish and to roll back, so check your recovery model, rebuild options, version and replicas before estimating anything.</p>
<p style="text-align: justify;">In full recovery, that log makes your log backups bigger. Availability groups must send the log to replicas; log shipping must copy and restore the backups. A rebuild also changes a great many data pages. The affected extents enter the next differential, so a broad rebuild can push that backup towards the size of a full one.</p>
<p style="text-align: justify;">That holds only while the rebuild lands after the full backup those differentials are measured against. An ordinary full backup afterwards resets that base. A COPY_ONLY one does not. The order of your jobs is worth a look before their schedule is.</p>
<p style="text-align: justify;">I have seen a Sunday maintenance job triple the size of the Monday differential, every week, for years, at a company that was paying for offsite storage by the gigabyte.</p>
<p style="text-align: justify;"><img loading="lazy" decoding="async" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/the-monday-stack.png" alt="A row of identical archive boxes along a storage room wall, each one taller than the last, climbing into shadow" width="3840" height="2160" /></p>
<p style="text-align: justify;">And then there is the simplest cost of all. Somewhere in that four hours, it may be rebuilding indexes that no user query has read during the observation window. Pure work, pure log and pure backup weight, unless another workload or operational requirement still needs them.</p>
<h3 style="text-align: justify;">What to Actually Do</h3>
<p style="text-align: justify;"><strong>Stop letting one generic plan make every decision.</strong><span> </span>The built-in maintenance task lets you choose databases and objects. It does not know which query slowed down, whether page density caused it, or whether the rebuild helped at all. Selection is not the same as diagnosis.</p>
<p style="text-align: justify;">Use one of the community scripts instead. Ola Hallengren&#8217;s maintenance solution is free, and it is the closest thing our field has to a standard. It lets you say something more specific than the wizard can: reorganize between five and thirty percent fragmentation, rebuild above thirty, ignore anything under a thousand pages entirely.</p>
<p style="text-align: justify;">I should be honest about those two numbers, because this article is an argument against inherited belief. Five and thirty were rough orientation guidance, offered long ago as somewhere to start, and they hardened into doctrine because they were easy to repeat. Nobody tested them on your workload, or on mine. They still beat rebuilding a whole database indiscriminately. They are not a measurement. Treat them as an opening position.</p>
<p style="text-align: justify;">The thousand-page cutoff deserves attention too. Small tables can report terrifying fragmentation percentages without a meaningful workload cost. It is easy to spend a weekend window defragmenting objects whose few pages were never the bottleneck.</p>
<p style="text-align: justify;">Before you tune the schedule, look at what you actually have:</p>
<pre><code>SELECT OBJECT_SCHEMA_NAME(ps.object_id) AS SchemaName,
       OBJECT_NAME(ps.object_id) AS TableName,
       i.name AS IndexName,
       ps.partition_number,
       ps.page_count,
       CAST(ps.avg_fragmentation_in_percent AS decimal(5,1)) AS FragPct,
       CAST(ps.avg_page_space_used_in_percent AS decimal(5,1)) AS PageFullnessPct
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'SAMPLED') AS ps
JOIN sys.indexes AS i
  ON i.object_id = ps.object_id AND i.index_id = ps.index_id
WHERE ps.page_count &gt;= 1000
  AND ps.index_level = 0
  AND ps.alloc_unit_type_desc = 'IN_ROW_DATA'
  AND i.type IN (1, 2)
ORDER BY ps.avg_fragmentation_in_percent DESC;</code></pre>
<p style="text-align: justify;">Read page fullness alongside fragmentation, never as a verdict on its own. High nineties means the sampled leaf pages are packed and there is little to reclaim. Fifties or sixties is a reason to go and look at scans, memory pressure and page splits. It is not automatic permission to rebuild, because a low fill factor may have reserved that space on purpose.</p>
<p style="text-align: justify;">Start with SAMPLED when you need page-density information. It normally samples about one percent of the pages, but SQL Server uses DETAILED automatically for indexes or heaps under ten thousand pages. Avoid running DETAILED broadly on production because it reads every page.</p>
<p style="text-align: justify;">Passing NULL for the object scans across the database. The page count filter trims the output, not the work. Run this inventory out of hours; use explicit object and index IDs for scheduled checks.</p>
<p style="text-align: justify;">Before SQL Server 2022, this query needs VIEW DATABASE STATE; the usage query below needs VIEW SERVER STATE. From SQL Server 2022, use VIEW DATABASE PERFORMANCE STATE and VIEW SERVER PERFORMANCE STATE respectively.</p>
<p style="text-align: justify;"><strong>Separate your statistics decision from your index decision.</strong><span> </span>If measurement points at statistics, update those statistics on their own schedule. Test index maintenance where page density or fragmentation lines up with a performance problem you can name.</p>
<p style="text-align: justify;"><strong>Look at what you are maintaining first.</strong><span> </span>Find the indexes with no recorded reads and heavy writes and treat them as candidates to investigate, checking constraints, reporting and replicas before removing anything. Every index safely retired is one the job never has to touch again. Shrinking the work beats scheduling it more cleverly.</p>
<pre><code>SELECT OBJECT_SCHEMA_NAME(i.object_id) AS SchemaName,
       OBJECT_NAME(i.object_id) AS TableName,
       i.name AS IndexName,
       COALESCE(us.user_seeks, 0)
         + COALESCE(us.user_scans, 0)
         + COALESCE(us.user_lookups, 0) AS ReadOperations,
       COALESCE(us.user_updates, 0) AS UpdateOperations
FROM sys.indexes AS i
JOIN sys.tables AS t
  ON t.object_id = i.object_id
LEFT JOIN sys.dm_db_index_usage_stats AS us
  ON us.object_id = i.object_id
 AND us.index_id = i.index_id
 AND us.database_id = DB_ID()
WHERE i.index_id &gt; 1
  AND i.type = 2
  AND t.is_memory_optimized = 0
  AND i.is_hypothetical = 0
  AND i.is_disabled = 0
  AND OBJECTPROPERTY(i.object_id, 'IsUserTable') = 1
ORDER BY ReadOperations, UpdateOperations DESC;</code></pre>
<p style="text-align: justify;">The query excludes memory-optimized tables explicitly. Type alone will not catch their nonclustered indexes. The usage view has no counters for them, and the LEFT JOIN would turn those missing counters into zeros. Absent is not the same as unused. Check those tables separately in sys.dm_db_xtp_index_stats.</p>
<p style="text-align: justify;">One warning before you act on it. Those counters clear when the engine restarts, and a detach or AUTO_CLOSE shutdown removes the rows entirely. An index that looks unused may be one nobody has needed since Tuesday. Note when the window opened, and let it cover a full business cycle with month end in it.</p>
<h3 style="text-align: justify;">The Test That Gives You an Answer</h3>
<p style="text-align: justify;">If somebody on your team is certain the rebuild is critical, there is a controlled way to test the claim. It is also more productive than having the argument.</p>
<p style="text-align: justify;">Pause only the rebuild step, under normal change control, with a rollback plan. Cover a representative business cycle, not a quiet fortnight standing in for month end. Keep statistics updates running. Use Query Store or your existing baseline to compare duration, CPU, logical reads, waits and plan changes.</p>
<p style="text-align: justify;">Sometimes nothing visible degrades. The Sunday night window frees up, the differentials shrink, and the log backups stop spiking. That is evidence, provided the observation window represented the workload.</p>
<p style="text-align: justify;">On some systems something does degrade. That is a candidate, not a conclusion. Data grows, plans change, people deploy things.</p>
<p style="text-align: justify;">Test the affected index statistics first, using FULLSCAN to match a regular nonpartitioned rebuild. If that clears the regression, you have a fix that does not require rebuilding.</p>
<p style="text-align: justify;">If it does not, test a rebuild of that index and compare the same workload. If performance recovers, you have evidence for targeted maintenance. If it does not, keep investigating. A failed statistics update is not an instruction to rebuild the database.</p>
<blockquote><p>Either outcome is a win. The only losing position is the one where nobody has ever checked.</p></blockquote>
<p style="text-align: justify;">If nobody has four hours to go and find out, that is a large part of what a<span> </span><strong><a href="https://blog.sqlauthority.com/comprehensive-database-performance-health-check/">Comprehensive Database Performance Health Check</a></strong><span> </span>is for. Four hours working out which of your maintenance earns its window and which has been running on faith since before you arrived. I never ask for your password. Every script goes home with your team, so you never need me again, at a fixed price agreed before we start.</p>
<h3 style="text-align: justify;">Why This Job Never Gets Questioned</h3>
<p style="text-align: justify;">Because it runs at two in the morning on a Sunday and it succeeds.</p>
<p style="text-align: justify;">Green tick, every week, for eleven years.</p>
<p style="text-align: justify;"><img loading="lazy" decoding="async" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/the-green-light.png" alt="A single green indicator lamp glowing in a dark room above an empty chair at two in the morning" width="3840" height="2160" /></p>
<blockquote><p>Too often, anything that reports success escapes review. We examine the things that fail.</p></blockquote>
<p style="text-align: justify;">There is usually a person attached to this job too, and it is worth being kind about. The person who set it up left years ago. The person who inherited it did not choose it and does not fully trust it. They are also not going to be the one who switches off eleven years of green ticks. Fear is a terrible reason to spend four hours every Sunday. It is also the most common one I meet.</p>
<p style="text-align: justify;">So the job that quietly consumes four hours and floods your log every weekend is safe forever, while somebody three floors up is being asked to justify a storage bill it is largely responsible for.</p>
<p style="text-align: justify;"><strong>A maintenance job that has succeeded every week for eleven years is not proof that it is needed, it is only proof that nobody has had a reason to look at it.</strong></p>
<p>Published by <strong>Pinal Dave</strong> on <a href="https://blog.sqlauthority.com/">SQLAuthority</a>. More of my work at <a href="https://pinaldave.com/" target="_blank" rel="noopener">pinaldave.com</a>.</p>
<p>First appeared on <a href="https://blog.sqlauthority.com/2026/09/17/your-index-rebuild-maintenance-plan-is-rebuilding-indexes-nobody-uses/">Your Index Rebuild Maintenance Plan Is Rebuilding Indexes Nobody Uses</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.sqlauthority.com/2026/09/17/your-index-rebuild-maintenance-plan-is-rebuilding-indexes-nobody-uses/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">203459</post-id>	</item>
		<item>
		<title>AI Execution Plan Analysis: I Gave It My Plan and Asked What Was Wrong</title>
		<link>https://blog.sqlauthority.com/2026/09/16/ai-execution-plan-analysis-i-gave-it-my-plan-and-asked-what-was-wrong/</link>
					<comments>https://blog.sqlauthority.com/2026/09/16/ai-execution-plan-analysis-i-gave-it-my-plan-and-asked-what-was-wrong/#comments</comments>
		
		<dc:creator><![CDATA[Pinal Dave]]></dc:creator>
		<pubDate>Wed, 16 Sep 2026 01:30:59 +0000</pubDate>
				<category><![CDATA[SQL Performance]]></category>
		<category><![CDATA[Parameter Sniffing]]></category>
		<category><![CDATA[Recompile]]></category>
		<category><![CDATA[SQL Statistics]]></category>
		<guid isPermaLink="false">https://blog.sqlauthority.com/?p=203437</guid>

					<description><![CDATA[<p>I handed AI a plan with no warnings and healthy numbers, yet it read five million rows to return seventeen. That is the real test of AI execution plan analysis.</p>
<p>First appeared on <a href="https://blog.sqlauthority.com/2026/09/16/ai-execution-plan-analysis-i-gave-it-my-plan-and-asked-what-was-wrong/">AI Execution Plan Analysis: I Gave It My Plan and Asked What Was Wrong</a></p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><strong>I did not hand it a plan with a spill in it. Everybody can find a spill. I handed it a plan with no warnings at all, where every number on the screen looked healthy, and the query underneath was reading five million rows to return seventeen.</strong> That is the real test of AI execution plan analysis.</p>
<p style="text-align: justify;"><span>None of the mechanics here are new, and I have written about the two pieces this turns on before: </span><strong><a href="https://blog.sqlauthority.com/2020/02/07/sql-server-row-goal-and-performance/">SQL SERVER &#8211; Row Goal and Performance</a></strong><span>, which is why a TOP changes what the optimizer aims for, and </span><strong><a href="https://blog.sqlauthority.com/2020/12/25/sql-server-number-of-rows-read-execution-plan/">SQL SERVER &#8211; Number of Rows Read</a></strong><span>, which is the plan property that gives it away. What is new here is that I said neither of those words to the AI, and I wanted to see how far it got on its own.</span></p>
<h3 style="text-align: justify;">The Problem I Handed Over</h3>
<p style="text-align: justify;">Here is the exact thing I typed, before any plan, any context or any hint.</p>
<blockquote><p>One stored procedure. One server. Statistics rebuilt this morning.</p>
<p>Customer A has four million orders. Their screen loads instantly.</p>
<p>Customer B has seventeen orders. Their screen is slow, every single time.</p>
<p>The customer with fewer rows is the slow one. Why?</p></blockquote>
<p style="text-align: justify;">That is the whole ticket, and it is why nobody believed it for two weeks. It sounds like nonsense. More rows should mean more work.</p>
<p style="text-align: justify;">This is the procedure. There is nothing clever in it.</p>
<pre><code>CREATE PROCEDURE dbo.LatestOrders
    @CustomerID int
AS
    SELECT TOP (20) OrderID, OrderDate, Amount
    FROM dbo.Orders
    WHERE CustomerID = @CustomerID
    ORDER BY OrderDate DESC;</code></pre>
<p style="text-align: justify;">Twenty rows. One customer. An index on the date column, an index on the customer column, and statistics rebuilt with FULLSCAN so nothing is out of date.</p>
<h3 style="text-align: justify;">What the Plan Looked Like</h3>
<p style="text-align: justify;"><img loading="lazy" decoding="async" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/plan-properties.png" alt="An execution plan showing SELECT, Top and Index Scan, all carrying 17 rows with no warnings, beside a properties panel where Estimated Rows Read says 25 and Actual Rows Read says 5,000,000" width="1600" height="900" /></p>
<p style="text-align: justify;">Two operators. No warnings, no missing index suggestion, nothing red or yellow anywhere.</p>
<p style="text-align: justify;">Look at the number people actually read. Estimated twenty rows, seventeen came back. That is as close to correct as an estimate gets in real life.</p>
<p style="text-align: justify;">SQL Server also priced this query at 0.0034. If you go looking for your expensive queries by cost, this one never appears on the list.</p>
<p style="text-align: justify;">The damage is one line further down the properties panel, in a row called Rows Read. It expected to look at 25 rows. It looked at 5,000,000.</p>
<h3 style="text-align: justify;">Why the Small Customer Is the Slow One</h3>
<p style="text-align: justify;">One thing before the picture. There is one index here, not two. Every order from every customer sits in it together, newest first, and the picture just colours in where one account&#8217;s rows land inside that shared list.</p>
<p style="text-align: justify;"><img loading="lazy" decoding="async" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/row-goal.png" alt="The same index shown twice. The big account's rows run its whole length, so the scan finds twenty at once and stops after 3 pages. The quiet account's seventeen rows sit only at the old end, so the scan reads all 17,967 pages and never finds a twentieth" width="1600" height="680" /></p>
<p style="text-align: justify;">The answer is the word TOP.</p>
<p style="text-align: justify;">Because you asked for twenty rows, SQL Server gives itself permission to stop as soon as it has twenty. So it walks the date index from newest order backward and grabs anything belonging to your customer, expecting to be finished in a few rows.</p>
<p style="text-align: justify;">For the customer with four million orders, that works beautifully. Their orders are everywhere. Twenty of them turn up straight away and it stops. Three pages read, and the screen is instant.</p>
<p style="text-align: justify;">Then that same saved plan gets handed to a customer with seventeen orders.</p>
<p style="text-align: justify;">Here is the part that makes it click. A small customer is usually a quiet customer. Seventeen orders in total, and the last one was placed nearly three years ago. That is not me rigging the example. That is what a dormant account looks like, and your database has hundreds of them.</p>
<p style="text-align: justify;">So all seventeen of their rows sit right down at the old end of that shared index, buried under three years of everybody else&#8217;s orders.</p>
<p style="text-align: justify;">Now the same strategy has to walk past everybody else&#8217;s orders just to reach the first one. Then it keeps walking, all the way to the end of the index, because the only way to prove there is no twentieth order is to run out of table.</p>
<p style="text-align: justify;">17,967 pages read and 446 milliseconds of CPU, to return seventeen rows.</p>
<p style="text-align: justify;">Same procedure. Same statistics. The plan was built for the big customer and then reused for the small one.</p>
<p style="text-align: justify;">The plan says so outright, if you go looking. ParameterCompiledValue is 4417 and ParameterRuntimeValue is 10007, sitting side by side in the XML.</p>
<h3 style="text-align: justify;">The First Time I Asked</h3>
<p style="text-align: justify;">I gave it the plan and one sentence. This query is slow, tell me why.</p>
<p style="text-align: justify;">It got the main thing right, and quickly. It spotted the gap between rows expected and rows actually read.</p>
<p style="text-align: justify;">Then it explained the cause. The TOP was letting the optimizer assume an early exit, so the estimate of twenty is not a mistake but a side effect. That chain took me about two years to learn to see.</p>
<p style="text-align: justify;">Then, in exactly the same confident voice, it told me three things that were not true.</p>
<p style="text-align: justify;">It told me to update statistics. They had been rebuilt with FULLSCAN that morning.</p>
<p style="text-align: justify;">It told me to create an index on the customer column. That index already existed.</p>
<p style="text-align: justify;">It described a key lookup that was costing me most of the runtime. There is no lookup in this plan. There are two operators and neither of them is one.</p>
<p style="text-align: justify;">Nothing marked those three as guesses. Same tone, same structure, same helpful bolded heading as the finding that was correct.</p>
<h3 style="text-align: justify;">The Second Time I Asked</h3>
<p style="text-align: justify;">Same plan, but this time I also gave it the row counts, the index definitions, and the version of SQL Server.</p>
<p style="text-align: justify;">The three invented findings disappeared. Not softened. Gone.</p>
<p style="text-align: justify;">So the lesson is not that it is unreliable. It is that a plan on its own does not carry enough to interpret it, and a model with a gap will fill the gap instead of telling you there is one.</p>
<p style="text-align: justify;">Which, if I am honest, is also true of a certain kind of consultant.</p>
<h3 style="text-align: justify;">The Fix, and Why I Did Not Use It</h3>
<p style="text-align: justify;">Both times, it recommended the fix you already know. Add OPTION (RECOMPILE) so one customer&#8217;s plan stops being handed to another.</p>
<p style="text-align: justify;">That was the right answer for about fifteen years.</p>
<p style="text-align: justify;"><img loading="lazy" decoding="async" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/psp-fix.png" alt="Fifty calls for the small customer take 17.5 seconds with the 2022 feature switched off and 17 milliseconds with it switched on" width="1600" height="760" /></p>
<p style="text-align: justify;">SQL Server 2022 introduced a feature that does this by itself. It notices one customer is enormous and the rest are small, and it keeps more than one plan for the same query instead of forcing everybody to share. Somebody had switched that feature off on this database years earlier, and nobody could remember why.</p>
<p style="text-align: justify;">Fifty calls for the small customer took 17.5 seconds with it off, and 17 milliseconds with it back on. Same data, same statistics, same query.</p>
<p style="text-align: justify;">So the hint works. It is also a hint for a problem this server stopped having in SQL Server 2022, and applying it would have papered over the actual cause.</p>
<p style="text-align: justify;"><strong>One important caveat, and please read this one.</strong><span> </span>I am not telling you to switch this feature on everywhere.</p>
<p style="text-align: justify;">Several people I respect have written about turning it off and getting a calmer, more predictable server for it. It can pick the wrong plan for a particular query. It can add compilations you did not ask for. Whoever disabled it here may well have had a good afternoon&#8217;s reason.</p>
<p style="text-align: justify;">So take my result as one measurement on one workload, not as advice for yours. The point is smaller and more annoying than a recommendation. The right answer depended on the build number and the shape of the data.</p>
<p style="text-align: justify;">Here is the part I got wrong when I first wrote this up. The build number<span> </span><em>is</em><span> </span>in the plan. It sits in the very first tag of the XML, in an attribute called Build, and mine says 17.0.4065.4. I have never once watched anybody read it, myself included. What is genuinely not in there is the shape of the data, or whether this database had the 2022 behavior switched on at all.</p>
<h3 style="text-align: justify;">How I Use It Now</h3>
<p style="text-align: justify;">As a fast, tireless first reader that occasionally makes things up.</p>
<p style="text-align: justify;">I give it everything. The plan, the schema, the row counts, and the build number every time, because that package is what moved its answer from a hint to a root cause. I did not feed them in one at a time, so I cannot honestly tell you which one did the work, and I am not going to pretend otherwise in a post about pretending otherwise.</p>
<p style="text-align: justify;">Then I check every finding against the plan myself. That takes ten minutes and it is not optional, because the invented findings look exactly like the real ones and there is no tell.</p>
<h3 style="text-align: justify;">Try It Yourself</h3>
<p style="text-align: justify;">Everything above came off my own instance, and you can have the same afternoon.</p>
<p style="text-align: justify;">This builds the table, the lopsided customer, the indexes and the procedure, then runs the three tests. On SQL Server 2022 or later it switches the new behavior off so you can watch the old problem happen, then switches it back on so you can watch it go away.</p>
<pre><code>/*  The top twenty query that is fast for a big customer
    and slow for a small one.

    SQL Server 2016 SP1 and later, because of CREATE OR ALTER.
    Builds about 750 MB of table and indexes, so leave a
    couple of GB free.
    It will not touch an existing PlanLab database.
    Drop it yourself at the end.  */

USE master;
GO
IF DB_ID('PlanLab') IS NOT NULL
BEGIN
    PRINT '&gt;&gt;&gt; A database called PlanLab already exists on this server.';
    PRINT '&gt;&gt;&gt; Nothing has been changed. Drop it yourself, or rename it';
    PRINT '&gt;&gt;&gt; throughout this script, then run this again.';
    SET NOEXEC ON;
END
GO
CREATE DATABASE PlanLab;
ALTER DATABASE PlanLab SET RECOVERY SIMPLE;
GO

/*  Parameter Sensitive Plan optimization needs compatibility level 160 or
    higher, and a new database inherits its level from model. Raise it if it
    is too low, and never lower it if it is already above.  */
IF CONVERT(int, PARSENAME(
       CONVERT(varchar(32), SERVERPROPERTY('ProductVersion')), 4)) &gt;= 16
   AND (SELECT compatibility_level
          FROM sys.databases WHERE name = 'PlanLab') &lt; 160
    EXEC('ALTER DATABASE PlanLab SET COMPATIBILITY_LEVEL = 160');
GO
USE PlanLab;
GO

CREATE TABLE dbo.Orders
(
    OrderID    int IDENTITY(1,1) NOT NULL,
    CustomerID int           NOT NULL,
    OrderDate  datetime2(0)  NOT NULL,
    Amount     decimal(10,2) NOT NULL,
    Notes      char(60)      NOT NULL,
    CONSTRAINT PK_Orders PRIMARY KEY CLUSTERED (OrderID)
);
GO

/*  Five million orders. Customer 4417 owns four million of them.
    Sixty thousand other customers own about seventeen each.  */
WITH E1(n) AS (SELECT 1 FROM
         (VALUES (1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) AS t(n)),
     E2(n) AS (SELECT 1 FROM E1 a CROSS JOIN E1 b),
     E4(n) AS (SELECT 1 FROM E2 a CROSS JOIN E2 b),
     E8(n) AS (SELECT 1 FROM E4 a CROSS JOIN E4 b),
     Nums  AS (SELECT TOP (5000000)
                      ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS v FROM E8)
INSERT dbo.Orders WITH (TABLOCK) (CustomerID, OrderDate, Amount, Notes)
SELECT CASE WHEN v &lt;= 4000000 THEN 4417
            ELSE 10000 + CONVERT(int, (v - 4000000) % 60000) END,
       DATEADD(minute, -CONVERT(int, v % 2600000), '2026-09-01T00:00:00'),
       CONVERT(decimal(10,2), 12.00 + (v % 98700) / 100.0),
       'order line detail'
FROM Nums;
GO

/*  The reporting index somebody added years ago, and the obvious one.  */
CREATE NONCLUSTERED INDEX IX_Orders_OrderDate
    ON dbo.Orders (OrderDate DESC) INCLUDE (CustomerID, Amount);
CREATE NONCLUSTERED INDEX IX_Orders_CustomerID
    ON dbo.Orders (CustomerID);
GO

/*  Statistics as good as they get. This is not a stale statistics story.  */
UPDATE STATISTICS dbo.Orders WITH FULLSCAN;
GO

/*  The whole story depends on one plan being sniffed and reused, which is
    the default. Set it anyway so the demo does not depend on your server.  */
ALTER DATABASE SCOPED CONFIGURATION SET PARAMETER_SNIFFING = ON;
GO

CREATE OR ALTER PROCEDURE dbo.LatestOrders
    @CustomerID int
AS
BEGIN
    SET NOCOUNT ON;
    SELECT TOP (20) OrderID, OrderDate, Amount
    FROM dbo.Orders
    WHERE CustomerID = @CustomerID
    ORDER BY OrderDate DESC;
END
GO

/*  On SQL Server 2022 and later, at compatibility level 160 or higher, this
    query is eligible for Parameter Sensitive Plan optimization and usually
    never shows the problem. Switch it off to see what
    earlier versions do.  */
IF CONVERT(int, PARSENAME(
       CONVERT(varchar(32), SERVERPROPERTY('ProductVersion')), 4)) &gt;= 16
    EXEC('ALTER DATABASE SCOPED CONFIGURATION
          SET PARAMETER_SENSITIVE_PLAN_OPTIMIZATION = OFF');
GO

/*  ---- The test. Turn on Include Actual Execution Plan first. ----  */
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
GO
/*  1. The big customer runs first, so the saved plan is built for them.  */
SET STATISTICS IO ON;
EXEC dbo.LatestOrders @CustomerID = 4417;      -- 3 reads
SET STATISTICS IO OFF;
GO
/*  2. A customer with seventeen orders, reusing that same plan.
       Click the Index Scan, open Properties, and read Rows Read.  */
SET STATISTICS IO ON;
EXEC dbo.LatestOrders @CustomerID = 10007;     -- about 17,900 reads
SET STATISTICS IO OFF;
GO
/*  3. Put the 2022 behavior back and run the small customer again.  */
IF CONVERT(int, PARSENAME(
       CONVERT(varchar(32), SERVERPROPERTY('ProductVersion')), 4)) &gt;= 16
    EXEC('ALTER DATABASE SCOPED CONFIGURATION
          SET PARAMETER_SENSITIVE_PLAN_OPTIMIZATION = ON');
GO
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
GO
EXEC dbo.LatestOrders @CustomerID = 4417;
GO
SET STATISTICS IO ON;
EXEC dbo.LatestOrders @CustomerID = 10007;     -- 54 reads
SET STATISTICS IO OFF;
GO
SET NOEXEC OFF;
GO</code></pre>
<p style="text-align: justify;">If your numbers come out different, I would genuinely like to hear it. That is the useful kind of email.</p>
<p style="text-align: justify;"><strong>The problem was never that it gets things wrong, it is that being right and making things up arrive in the same handwriting, and only one of you in that conversation can tell them apart.</strong></p>
<p style="text-align: justify;">
<p>Published by <strong>Pinal Dave</strong> on <a href="https://blog.sqlauthority.com/">SQLAuthority</a>. More of my work at <a href="https://pinaldave.com/" target="_blank" rel="noopener">pinaldave.com</a>.</p>
<p>First appeared on <a href="https://blog.sqlauthority.com/2026/09/16/ai-execution-plan-analysis-i-gave-it-my-plan-and-asked-what-was-wrong/">AI Execution Plan Analysis: I Gave It My Plan and Asked What Was Wrong</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.sqlauthority.com/2026/09/16/ai-execution-plan-analysis-i-gave-it-my-plan-and-asked-what-was-wrong/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">203437</post-id>	</item>
		<item>
		<title>Y2K: The Work Behind &#8220;Nothing Happened&#8221;</title>
		<link>https://blog.sqlauthority.com/2026/09/15/y2k-the-work-behind-nothing-happened/</link>
					<comments>https://blog.sqlauthority.com/2026/09/15/y2k-the-work-behind-nothing-happened/#respond</comments>
		
		<dc:creator><![CDATA[Pinal Dave]]></dc:creator>
		<pubDate>Tue, 15 Sep 2026 01:30:16 +0000</pubDate>
				<category><![CDATA[SQL Tips and Tricks]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[Y2K]]></category>
		<guid isPermaLink="false">https://blog.sqlauthority.com/?p=203497</guid>

					<description><![CDATA[<p>Y2K did not end in worldwide disaster. Its repairs, failures, and recoveries show why, and what database teams can learn about proving maintenance matters.</p>
<p>First appeared on <a href="https://blog.sqlauthority.com/2026/09/15/y2k-the-work-behind-nothing-happened/">Y2K: The Work Behind &#8220;Nothing Happened&#8221;</a></p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><strong>On January 1, 2000, the expected Y2K worldwide computer breakdown did not arrive. That was a relief. It also made the work behind it surprisingly easy to dismiss.</strong></p>
<p><img loading="lazy" decoding="async" style="width: 100%; height: auto;" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/coffee-world.jpg" alt="Surreal miniature technicians repair a cracked coffee cup beneath an ordinary breakfast, making hidden maintenance visible." width="1448" height="1086" /></p>
<p style="text-align: justify;"><em>The images are AI-generated visual metaphors, not photographs of historical events.</em></p>
<p style="text-align: justify;">Billions of dollars went into preparing for Y2K. Against that expense, an ordinary morning can look like a poor return.</p>
<p style="text-align: justify;">Unless you were one of the people who had spent the previous months making sure it would be ordinary.</p>
<p style="text-align: justify;">I keep coming back to this because I recognize the argument from database work. Nothing has failed. Why are we paying so much to keep it that way?</p>
<p style="text-align: justify;">The answer cannot just be, &#8220;Trust us.&#8221; But it does not have to be. Y2K left evidence, and some of the most useful evidence came from the things that still went wrong.</p>
<h3>Two Digits Made Sense. Until They Didn&#8217;t.</h3>
<p style="text-align: justify;">The Year 2000 problem, shortened to Y2K, grew out of dates stored with two digits for the year. A program could treat 99 as 1999 but misread 00 as 1900. Other date calculations could fail differently. The missing century was the problem; the result depended on the code.</p>
<p><img loading="lazy" decoding="async" style="width: 100%; height: auto;" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/two-digit-door.jpg" alt="Miniature workers try to carry 2000 through a narrow brass doorway marked 99, illustrating a two-digit year limit." width="1448" height="1086" /></p>
<p style="text-align: justify;">It is easy to laugh at the saving now. The smallest IBM 1401 was offered with <a rel="nofollow noopener" target="_blank" href="https://ibm1401.computerhistory.org/PlamerJ1401Soft2Rev2.html">1,400 characters of memory</a>. A standard IBM punched card had <a rel="nofollow noopener" target="_blank" href="https://www.ibm.com/history/punched-card">80 columns</a>. Two characters were worth arguing over.</p>
<p><img loading="lazy" decoding="async" style="width: 100%; height: auto;" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/memory-bunks.jpg" alt="Tiny bunks inside a memory chip illustrate the cramped storage that encouraged programmers to save characters." width="1448" height="1086" /></p>
<p style="text-align: justify;">Alan Greenspan had done it himself. Recalling his programming days, he described being proud of the space he saved by leaving out the 19. His admission appears in the <a rel="nofollow noopener" target="_blank" href="https://www.govinfo.gov/content/pkg/CREC-1999-06-15/pdf/CREC-1999-06-15-pt1-PgS6975-6.pdf">Congressional Record</a>: &#8220;I am one of the culprits who created the problem.&#8221;</p>
<p style="text-align: justify;">That is more interesting than a story about careless programmers. A useful saving came with an assumption about the century. The code kept running long enough for that assumption to become a problem.</p>
<p style="text-align: justify;">Anyone who has maintained a temporary solution for years will understand.</p>
<p><img loading="lazy" decoding="async" style="width: 100%; height: auto;" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/cardboard-bridge.jpg" alt="A miniature street rests on a patched cardboard bridge while workers maintain its temporary supports." width="1448" height="1086" /></p>
<h3>The Deadline Was Not a Surprise</h3>
<p style="text-align: justify;">Bob Bemer published warnings about the problem in <a rel="nofollow noopener" target="_blank" href="https://archive.computerhistory.org/resources/access/text/finding-aids/102724781-Bemer/102724781-Bemer.pdf">1971 and 1979</a>. This was not a defect discovered in the last week of December.</p>
<p style="text-align: justify;">But knowing about a deadline and being ready for it are different things. In May 1997, only 21 percent of the mission-critical systems at 24 major US federal agencies were reported compliant. By December 1999, that figure was 99.9 percent, according to the <a rel="nofollow noopener" target="_blank" href="https://www.gao.gov/assets/aimd-00-290.pdf">government&#8217;s subsequent review</a>.</p>
<p style="text-align: justify;">Those are reported readiness figures, not proof that every test was perfect. Still, they describe work completed before midnight. The quiet morning afterward is not the only evidence we have.</p>
<p><img loading="lazy" decoding="async" style="width: 100%; height: auto;" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/muted-warning.jpg" alt="A small technician rings a bell behind layers of calendar paper while nearby office work continues." width="1448" height="1086" /></p>
<h3>Someone Had to Read the Code</h3>
<p style="text-align: justify;">The work meant finding affected systems, following their connections, changing date handling, and testing the results. It also meant preparing a way to keep operating if a repair failed.</p>
<p style="text-align: justify;">Think about what that asks of the person doing it. A two-digit field is easy to spot. Understanding every calculation, file exchange, and report that depends on it is another matter.</p>
<p style="text-align: justify;">You cannot fix that by replacing every 99 with 1999. You have to understand what the program means.</p>
<p><img loading="lazy" decoding="async" style="width: 100%; height: auto;" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/red-thread.jpg" alt="Miniature workers trace one red thread through tangled machinery beneath a street, illustrating old-code dependencies." width="1448" height="1086" /></p>
<p style="text-align: justify;">And the business still needs the program. Payroll has to run. Payments have to move. You are changing something people depend on while they continue to depend on it.</p>
<p style="text-align: justify;">That is the part of maintenance I wish more people could see. Not just the change, but the care needed to make it without creating the next problem.</p>
<p><img loading="lazy" decoding="async" style="width: 100%; height: auto;" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/moving-repair.jpg" alt="Tiny workers stitch a giant shoe on a moving conveyor, illustrating repairs while a business keeps running." width="1448" height="1086" /></p>
<h3>The Pieces Passed. The System Failed.</h3>
<p style="text-align: justify;">During the rollover, a US intelligence ground-processing system stopped processing satellite data. The satellites themselves remained under control. The failure was on the ground.</p>
<p style="text-align: justify;">At a <a rel="nofollow noopener" target="_blank" href="https://sgp.fas.org/news/2000/01/dody2k2.html">January 4, 2000, briefing</a>, Deputy Secretary of Defense John Hamre explained the testing problem. The service had to keep operating, so testing had been done in segments. The segments worked. Put together, they did not.</p>
<p><img loading="lazy" decoding="async" style="width: 100%; height: auto;" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/integration-joint.jpg" alt="Workers inspect a cracked coupling between three miniature machines while an inspector holds green approval cards." width="1448" height="1086" /></p>
<p style="text-align: justify;">Backup procedures were operating before midnight in Washington. They initially provided less than normal capacity, but covered the high-priority military requirements.</p>
<p style="text-align: justify;">There is the story in miniature. Preparation did not prevent every failure. Preparation also included the people and procedures that contained a failure when it arrived.</p>
<p><img loading="lazy" decoding="async" style="width: 100%; height: auto;" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/paperclip-fallback.jpg" alt="A giant paperclip supports miniature traffic below a broken bridge, illustrating a prepared fallback." width="1448" height="1086" /></p>
<p style="text-align: justify;">Calling that &#8220;nothing happened&#8221; leaves out the breakdown, the diagnosis, and the recovery. It leaves out almost everything a database professional would want to learn from it.</p>
<h3>The Money Went to the Wrong Banks</h3>
<p style="text-align: justify;">The Federal Reserve had an equally instructive incident. Governor Edward Kelley <a rel="nofollow noopener" target="_blank" href="https://www.federalreserve.gov/boarddocs/speeches/2000/20000330.htm">described a Y2K error</a> in one district&#8217;s system that misallocated millions of dollars to the wrong banks.</p>
<p style="text-align: justify;">The problem was fixed within two hours. The allocations were identified and reversed. Kelley reported that nobody was hurt or inconvenienced.</p>
<p style="text-align: justify;">That last sentence is the successful outcome. The two sentences before it explain how it was achieved.</p>
<p style="text-align: justify;">There were less dramatic date errors too. A federal review recorded Medicare claims arriving with service dates of 1900 or 2099. Most of those errors were traced to providers that had not upgraded their systems.</p>
<p><img loading="lazy" decoding="async" style="width: 100%; height: auto;" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/century-receipt.jpg" alt="A cash-register receipt becomes a long staircase of aging paper, illustrating a date error that adds a century." width="1448" height="1086" /></p>
<p style="text-align: justify;">Some faults survived the preparation. Some systems were not ready. Those are different explanations, and neither is the same as saying the bug was imaginary.</p>
<h3>A Real Problem Can Still Be Overfunded</h3>
<p style="text-align: justify;">None of this proves that every dollar spent on Y2K was necessary. That would be the same bad argument in reverse.</p>
<p style="text-align: justify;">Countries came through with different levels of preparation and different dependence on computers. Kelley also described organizations replacing old systems altogether. Comparing their final outcomes does not tell us, by itself, which spending was necessary and which was waste.</p>
<p style="text-align: justify;">Two questions deserve separate answers.</p>
<p style="text-align: justify;"><strong>Were there real defects?</strong> Yes. We have documented failures, repairs, and recoveries.</p>
<p style="text-align: justify;"><strong>Did every purchase and project earn its cost?</strong> The existence of those defects does not establish that. A project still needs a reason for its scope and its bill.</p>
<p style="text-align: justify;">You can respect the engineers who fixed a real problem and question what was spent around them. You do not have to choose one.</p>
<p><img loading="lazy" decoding="async" style="width: 100%; height: auto;" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/useful-and-useless.jpg" alt="One miniature crew repairs a cracked support while another polishes a hanging brass ornament that bears no weight." width="1448" height="1086" /></p>
<h3>The Evidence Was in the Wrong Place</h3>
<p style="text-align: justify;">I used to think prevention was unprovable. That is too easy an answer.</p>
<p style="text-align: justify;">A repair can leave a failing test, the change that fixes it, and a passing result. A recovery can leave a timeline showing what stopped, what was restored, and how long it took.</p>
<p style="text-align: justify;">That will not tell us exactly what an unrepaired world would have looked like. It will tell us considerably more than a photograph of people celebrating at midnight.</p>
<blockquote>
<p style="text-align: justify;">The quiet morning was the outcome. It was not the whole record.</p>
</blockquote>
<p style="text-align: justify;">Imagine finding a defect in October, fixing it, and proving the fix in November. By January, it is old news to your team. To someone outside the team, it may never have been news at all.</p>
<p style="text-align: justify;">The work has evidence. The person judging the work may never have seen it.</p>
<p><img loading="lazy" decoding="async" style="width: 100%; height: auto;" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/evidence-table.jpg" alt="Beneath a dining table, a miniature records keeper adds documents to the stack supporting a short table leg." width="1448" height="1086" /></p>
<h3>Your Backup Job Has the Same Problem</h3>
<p style="text-align: justify;">This is where the history becomes useful on Monday morning.</p>
<p style="text-align: justify;">There is protection you have tested, and there is routine you have inherited. Both can produce a green status on a report.</p>
<p style="text-align: justify;">A successful backup job tells you the job completed. A <a rel="nofollow noopener" target="_blank" href="https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/back-up-and-restore-of-sql-server-databases?view=sql-server-ver17">restore test</a>, with checks on the restored database, gives you evidence about recovery. Record the time it took, too. Being able to recover is not the same as recovering within the time the business can afford.</p>
<p style="text-align: justify;">An untested backup may be perfectly usable. You just have less evidence for the promise you are making. And last quarter&#8217;s successful test does not certify every backup you have taken since.</p>
<p><img loading="lazy" decoding="async" style="width: 100%; height: auto;" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/tested-net.jpg" alt="Workers compare a real net carrying test weights with a net-shaped shadow, illustrating tested versus assumed protection." width="1448" height="1086" /></p>
<p style="text-align: justify;">The same question belongs beside a failover plan or an index maintenance job: what have we checked, and what does that check actually establish?</p>
<p style="text-align: justify;">Do not defend a routine merely because it runs quietly. Do not discard it merely because the failure it guards against has not happened. Examine the reason for it, test what you can, and keep the results.</p>
<h3>Keep the Evidence Before Someone Asks</h3>
<p style="text-align: justify;">What stays with me about Y2K is not the size of the bill. It is how easy it is to look at a working system and miss the people who helped it stay that way.</p>
<p style="text-align: justify;">They deserve more than a claim that disaster was inevitable without them. They deserve an account of what they actually found and fixed.</p>
<p style="text-align: justify;">This question, which work earns our trust and which work merely inherits it, also runs through my book <strong>AI: Nobody&#8217;s in There. But we&#8217;re still in here.</strong> You can read the essays at <a rel="noopener" target="_blank" href="https://pinaldave.com/blog/index.html">pinaldave.com</a>, or find the paperback on <a rel="nofollow noopener" target="_blank" href="https://www.amazon.com/dp/B0H4T6W21S">Amazon</a>.</p>
<p style="text-align: justify;">I know what it feels like to maintain something that has not failed, then be asked to justify it by someone who has only seen it working. I would rather answer with the restore result, the defect we caught, and the recovery drill than ask for faith in my job title.</p>
<p style="text-align: justify;">That folder will not justify everything. It will let us have an honest conversation about what it does justify.</p>
<p><img loading="lazy" decoding="async" style="width: 100%; height: auto;" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/folder-world.jpg" alt="A person examines a miniature folder of repaired porcelain, copper braces, red stitches, and a paperclip bridge." width="1448" height="1086" /></p>
<p style="text-align: justify;"><em>If you spot a factual inaccuracy, please let me know. I am happy to correct it.</em></p>
<p style="text-align: justify;">Keep the evidence while the work is fresh. You should not have to reconstruct it when someone finally asks.</p>
<p style="text-align: justify;"><strong>This is not a reason to defend every maintenance job, it is a reason to show which ones earn their keep.</strong></p>
<p>Published by <strong>Pinal Dave</strong> on <a href="https://blog.sqlauthority.com/">SQLAuthority</a>. More of my work at <a href="https://pinaldave.com/" target="_blank" rel="noopener">pinaldave.com</a>.</p>
<p>First appeared on <a href="https://blog.sqlauthority.com/2026/09/15/y2k-the-work-behind-nothing-happened/">Y2K: The Work Behind &#8220;Nothing Happened&#8221;</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.sqlauthority.com/2026/09/15/y2k-the-work-behind-nothing-happened/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">203497</post-id>	</item>
		<item>
		<title>Fermat Left a Note in a Margin. Other People Spent 358 Years Finishing It.</title>
		<link>https://blog.sqlauthority.com/2026/09/14/fermat-left-a-note-in-a-margin-other-people-spent-358-years-finishing-it/</link>
					<comments>https://blog.sqlauthority.com/2026/09/14/fermat-left-a-note-in-a-margin-other-people-spent-358-years-finishing-it/#respond</comments>
		
		<dc:creator><![CDATA[Pinal Dave]]></dc:creator>
		<pubDate>Mon, 14 Sep 2026 01:30:14 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Mathematics]]></category>
		<guid isPermaLink="false">https://blog.sqlauthority.com/?p=203480</guid>

					<description><![CDATA[<p>That note kept mathematicians busy for the next three and a half centuries. Let us talk about what Fermat left in a margine.</p>
<p>First appeared on <a href="https://blog.sqlauthority.com/2026/09/14/fermat-left-a-note-in-a-margin-other-people-spent-358-years-finishing-it/">Fermat Left a Note in a Margin. Other People Spent 358 Years Finishing It.</a></p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><strong>In about 1637 a lawyer in Toulouse was reading a mathematics book in his own time. He had an idea, wrote it in the margin, and added that he had a marvelous proof which the margin was too narrow to contain. That note kept mathematicians busy for the next three and a half centuries. Let us talk about what Fermat left in a margine.</strong></p>
<p style="text-align: justify;"><img loading="lazy" decoding="async" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/the-margin.png" alt="AI-generated scene of an open seventeenth-century book with Fermat's Latin margin remark added beside the printed text" width="3200" height="2400" /></p>
<p style="text-align: justify;"><em>Hanc marginis exiguitas non caperet. This margin is too narrow to contain it.</em></p>
<p style="text-align: justify;">It is the most famous thing he ever wrote. No proof of the general claim survives from him.</p>
<p style="text-align: justify;">I want to tell that story. I also want to tell the other one, because Pierre de Fermat was quietly building things we still use every day, and almost nobody mentions them.</p>
<h3 style="text-align: justify;">A Lawyer With a Hobby</h3>
<p style="text-align: justify;">Fermat was born in 1601 and died in 1665. He was appointed to the Parlement de Toulouse in 1631 and spent his working life in the law.</p>
<p style="text-align: justify;">Mathematics was his hobby. That is worth sitting with for a moment. One of the finest mathematical minds of the century was doing this in the evenings, for pleasure, with no intention of building a career out of it.</p>
<h3 style="text-align: justify;">How Mathematics Was Done Then</h3>
<p style="text-align: justify;">There were no journals to publish in. There was no peer review in any form we would recognize. What there was, was the post.</p>
<p style="text-align: justify;">Mathematicians wrote to each other. They announced results in letters, set each other problems, and issued public challenges to see who could solve what. It was competitive, it was personal, and it ran on paper.</p>
<p style="text-align: justify;">Fermat fitted that world perfectly, and he had one habit that drove everybody mad. He communicated most of his work in letters to friends, often with little or no proof attached. Here is a thing that is true, he would write. Prove it yourself.</p>
<p style="text-align: justify;">The book he was annotating was a Latin translation of Diophantus, published by Claude Bachet in 1621, and his notes are in Latin too. The famous one ends like this.</p>
<blockquote><p>Hanc marginis exiguitas non caperet.</p></blockquote>
<p style="text-align: justify;">This margin is too narrow to contain it.</p>
<p style="text-align: justify;">He rarely published formally in his lifetime. Most of his mathematics circulated as manuscripts and letters, and much of it only reached print after he died.</p>
<p style="text-align: justify;"><img loading="lazy" decoding="async" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/the-post.png" alt="AI-generated seventeenth-century writing desk with open letters, two folded letters sealed in red wax, a quill and an inkwell" width="3200" height="2400" /></p>
<h3 style="text-align: justify;">Why Anybody Took the Note Seriously</h3>
<p style="text-align: justify;">Because of who wrote it.</p>
<p style="text-align: justify;">In 1654 he and Blaise Pascal worked out, in letters, how to split the stakes of an interrupted gambling game fairly. Their exchange helped lay the foundations of probability theory. They were arguing about a game. The mathematics reached much further.</p>
<p style="text-align: justify;">He was doing analytic geometry before Descartes published. Newton later said his own ideas on calculus came from Fermat&#8217;s way of drawing tangents. The principle in optics known as the principle of least time carries Fermat&#8217;s name too.</p>
<p style="text-align: justify;">He also stated a small theorem about primes and remainders. It became a foundation for primality testing and has a place in modern cryptography. Not bad for something passed around in letters.</p>
<p style="text-align: justify;">So when a man like that says he has a proof, people believe him and go looking.</p>
<h3 style="text-align: justify;">The Proof He Did Not Leave Us</h3>
<p style="text-align: justify;">Which brings us back to the margin.</p>
<p style="text-align: justify;">His claim was simple enough to say out loud. Take a to the power n, plus b to the power n, equals c to the power n. When n is 2 that is the right angled triangle from school. Three, four, five, and there are infinitely many more like it. Fermat said that once n is a whole number above 2, there are no answers at all in positive whole numbers.</p>
<p style="text-align: justify;"><img loading="lazy" decoding="async" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/what-fermat-claimed.png" alt="Square grids show 9 plus 16 equals 25; below, a number line places 27 plus 64 at 91, between the cubes 64 and 125" width="3200" height="3800" /></p>
<p style="text-align: justify;">He did leave a proof for one case, n equal to 4, using a technique he invented called infinite descent. Everything else was in that sentence.</p>
<p style="text-align: justify;">He died in 1665. His son Clement-Samuel gathered up the annotated copy and published it in 1670, so the world got the claim five years after the only person who might have explained it had gone.</p>
<h3 style="text-align: justify;">Three Centuries of People Trying</h3>
<p style="text-align: justify;">What happened next is the best part of the story, and it is why I do not think of those centuries as wasted.</p>
<p style="text-align: justify;">Leonhard Euler proved the case n equal to 3 in 1770. His proof had a significant gap in it, which somehow makes me like him more. Legendre and Dirichlet independently settled n equal to 5 around 1825. Gabriel Lame did n equal to 7 in 1839.</p>
<p style="text-align: justify;">Sophie Germain came at it from a completely different direction. She made progress on families of prime exponents at once, rather than taking them one at a time. Her results covered what mathematicians call the first case, where the prime exponent divides none of the three numbers. She did this at a time when the institutions of mathematics were closed to her.</p>
<p style="text-align: justify;">Ernst Kummer brought tools from another problem. His work on roots of unity had led him to ideal numbers, a way to recover the factorization rules that failed in these unfamiliar number systems. In 1847 he used them to prove Fermat&#8217;s claim for a large class of primes.</p>
<p style="text-align: justify;">Kummer did not settle the theorem. His work helped build algebraic number theory, which is a decent consolation prize.</p>
<p style="text-align: justify;">That is the pattern for three hundred years. People failed to prove it, and in failing they built tools that mathematics still runs on.</p>
<p style="text-align: justify;"><img loading="lazy" decoding="async" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/three-centuries.png" alt="A timeline of partial proofs from Fermat through Euler, Germain, Legendre, Dirichlet, Lame and Kummer, ending with Wiles in 1995" width="3200" height="4400" /></p>
<h3 style="text-align: justify;">The Boy in the Library</h3>
<p style="text-align: justify;">In the nineteen sixties a ten year old stopped at the library on his way home from school. He found a book called The Last Problem, by Eric Temple Bell, and inside it he met Fermat&#8217;s note.</p>
<p style="text-align: justify;">What caught Andrew Wiles was that he could understand it. He was ten, he could follow the entire statement, and nobody in three hundred years had proved it. He decided he would be the one who did.</p>
<p style="text-align: justify;">Then he grew up enough to see that he did not have anything like the mathematics he would need, and he put it away.</p>
<p style="text-align: justify;">In 1986 the work of Gerhard Frey and Ken Ribet turned the problem into a route. Wiles was thirty three. He went at it for six years in near total secrecy, telling his wife and almost nobody else. Six years of a career spent on something he could not discuss and might never finish.</p>
<p style="text-align: justify;">He announced it over three lectures in Cambridge in June 1993. He did not say what he was building towards until the closing minutes of the last one. It was in the newspapers. A three hundred year old problem was closed.</p>
<p style="text-align: justify;">Two months later a referee named Nick Katz, reading it line by line, reached a step that did not hold. A great deal rested on that step.</p>
<p style="text-align: justify;">This gets told as a disaster. I would tell it the other way round. Somebody had read it properly, all the way through, which is the system working exactly as intended.</p>
<p style="text-align: justify;">What followed was the hardest year of it. Wiles worked on the gap alone, then with his former student Richard Taylor. By his own account he came very close to accepting that it could not be closed at all. Seven years of his working life, and the thing he had wanted since he was ten, both about to go.</p>
<p style="text-align: justify;">Then on the nineteenth of September 1994 he saw it. The repair came from an approach he had tried years earlier and abandoned as a dead end.</p>
<p style="text-align: justify;">The corrected work filled an entire issue of the Annals of Mathematics in May 1995.</p>
<p style="text-align: justify;"><img loading="lazy" decoding="async" src="https://blog.sqlauthority.com/wp-content/uploads/2026/09/the-library.png" alt="AI-generated 1960s English library with an open book, a child's satchel and a chair pushed back from a sunlit reading table" width="3200" height="2400" /></p>
<h3 style="text-align: justify;">A Language With a Word for Not Yet</h3>
<p style="text-align: justify;">Here is the detail I find genuinely delightful, and it is where Fermat&#8217;s habit comes back around.</p>
<p style="text-align: justify;">There is a language called Lean. You write mathematics in it the way you write code, and a machine checks every step.</p>
<p style="text-align: justify;">Lean has a keyword called<span> </span><code>sorry</code>. You use it when you want to assert something now and prove it properly later. The documentation calls it a way of stubbing out an incomplete part while keeping a syntactically correct skeleton, which is a very polite way of saying that this bit is a promise.</p>
<p style="text-align: justify;">Lean warns you every time a declaration uses one. You can also ask any theorem what it rests on. If a<span> </span><code>sorry</code><span> </span>is hiding several layers underneath, in something you imported and forgot about, it shows up in that list.</p>
<blockquote><p>Somebody built a language where you may say &#8220;I have a marvelous proof of this and no room for it right now&#8221;, and it writes that down and tells anybody who asks.</p></blockquote>
<p style="text-align: justify;">Fermat would have loved it. He would also, I am fairly sure, have used it constantly.</p>
<p style="text-align: justify;">The theorem now has a complete machine-checked proof in Lean, published in September 2026. There is no<span> </span><code>sorry</code><span> </span>underneath it anywhere, and nothing assumed beyond the axioms the logic is built on. The note took three hundred and fifty eight years to settle, and now anybody who wants to can check the whole thing for themselves.</p>
<h3 style="text-align: justify;">What I Take From It</h3>
<p style="text-align: justify;">Fermat wrote down what he saw and left the checking to everybody else. By modern standards that is poor practice, and I would fail a code review for it.</p>
<p style="text-align: justify;">And then the note stopped being his. It belonged to Euler, who got it wrong in an interesting way. To Germain, working around every door that was shut to her. To Kummer, who brought tools from another problem and opened a way forward. To a ten year old in a library, and to a referee who did the unglamorous thing and read every line.</p>
<p style="text-align: justify;">None of them could have finished it alone. All of them are in the answer.</p>
<p style="text-align: justify;"><em>The book shown is not Fermat&#8217;s own copy, and the Latin remark was added to the picture. The diagrams are mine.</em></p>
<p style="text-align: justify;">One more thing, and then I will leave the margin alone. The question underneath this whole story, which parts of the checking a machine can take over and which parts stay ours, is the argument running through all thirty essays in my book<span> </span><strong>AI: Nobody’s in There. But we’re still in here.</strong><span> </span>Every essay is free to read at<span> </span><strong><a rel="noopener" target="_blank" href="https://pinaldave.com/blog/index.html">pinaldave.com</a></strong>, and there is a paperback on<span> </span><strong><a rel="nofollow noopener" target="_blank" href="https://www.amazon.com/dp/B0H4T6W21S">Amazon</a></strong><span> </span>if you would rather hold something real.</p>
<p style="text-align: justify;"><strong>Fermat&#8217;s note was never much of a proof, it was a very good question, and a good question outlasts the person who asked it.</strong></p>
<p style="text-align: justify;">
<p>Published by <strong>Pinal Dave</strong> on <a href="https://blog.sqlauthority.com/">SQLAuthority</a>. More of my work at <a href="https://pinaldave.com/" target="_blank" rel="noopener">pinaldave.com</a>.</p>
<p>First appeared on <a href="https://blog.sqlauthority.com/2026/09/14/fermat-left-a-note-in-a-margin-other-people-spent-358-years-finishing-it/">Fermat Left a Note in a Margin. Other People Spent 358 Years Finishing It.</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.sqlauthority.com/2026/09/14/fermat-left-a-note-in-a-margin-other-people-spent-358-years-finishing-it/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">203480</post-id>	</item>
	</channel>
</rss>
