# explain

Published articles for explain.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Covering Indexes and Index-Only Scans in PostgreSQL

DevFeed: [Covering Indexes and Index-Only Scans in PostgreSQL](<https://devfeed.tech/articles/covering-indexes-the-cheap-10x-that-most-schemas-leave-on-the-table-39591.md>)

Original publisher: [Read original article](<https://ankit-rana.com/logs/39-covering-indexes-index-only-scans/>)

Author: hello@ankit-rana.com

Published: 2026-08-18T00:00:00Z

Content type: tutorial

Language: en

Sources: [Ankit Rana | Mechanical Sympathy](<https://devfeed.tech/sources/ankit-rana-mechanical-sympathy.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Query (disambiguation)](<https://devfeed.tech/topics/query.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [b-tree](<https://devfeed.tech/tags/b-tree.md>), [cache](<https://devfeed.tech/tags/cache.md>), [covering](<https://devfeed.tech/tags/covering.md>), [covering-index](<https://devfeed.tech/tags/covering-index.md>), [database-performance](<https://devfeed.tech/tags/database-performance.md>), [explain](<https://devfeed.tech/tags/explain.md>), [heap](<https://devfeed.tech/tags/heap.md>), [indexes](<https://devfeed.tech/tags/indexes.md>), [indexing](<https://devfeed.tech/tags/indexing.md>), [innodb](<https://devfeed.tech/tags/innodb.md>), [pages](<https://devfeed.tech/tags/pages.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [query](<https://devfeed.tech/tags/query.md>), [storage](<https://devfeed.tech/tags/storage.md>), [vacuum](<https://devfeed.tech/tags/vacuum.md>)

### AI overview

This tutorial explains why a normal index scan may still be slow: after finding matching entries, the database follows a pointer into the table for each row. Covering indexes store the selected columns in the index and can avoid those heap reads. In PostgreSQL, index-only scans also depend on the visibility map marking pages all-visible, while SELECT * prevents the technique from being fully effective.

### Source excerpt

A normal index scan finds matching rows and then follows a pointer into the table for every one of them, which is a random read per row. A covering index stores the columns the query selects, so the engine answers entirely from the index and skips those reads. In PostgreSQL this only works when the visibility map marks the pages all-visible, so an unvacuumed table will report Heap Fetches in EXPLAIN and give back most of the gain. SELECT star defeats the technique completely.

## Why your index is not being used, and why the planner is usually right

DevFeed: [Why your index is not being used, and why the planner is usually right](<https://devfeed.tech/articles/why-your-index-is-not-being-used-and-why-the-planner-is-usually-right-39590.md>)

Original publisher: [Read original article](<https://ankit-rana.com/logs/38-why-your-index-is-not-being-used/>)

Author: hello@ankit-rana.com

Published: 2026-08-16T00:00:00Z

Content type: tutorial

Language: en

Sources: [Ankit Rana | Mechanical Sympathy](<https://devfeed.tech/sources/ankit-rana-mechanical-sympathy.md>)

Topics: [Query (disambiguation)](<https://devfeed.tech/topics/query.md>), [MySQL](<https://devfeed.tech/topics/mysql.md>), [bug](<https://devfeed.tech/topics/bug.md>)

Tags: [bug](<https://devfeed.tech/tags/bug.md>), [cardinality](<https://devfeed.tech/tags/cardinality.md>), [database-performance](<https://devfeed.tech/tags/database-performance.md>), [explain](<https://devfeed.tech/tags/explain.md>), [function](<https://devfeed.tech/tags/function.md>), [indexes](<https://devfeed.tech/tags/indexes.md>), [indexing](<https://devfeed.tech/tags/indexing.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [predicate](<https://devfeed.tech/tags/predicate.md>), [query](<https://devfeed.tech/tags/query.md>), [query-planner](<https://devfeed.tech/tags/query-planner.md>)

### AI overview

This tutorial explains why database indexes may not be used even when they exist. It focuses on inaccurate cardinality estimates caused by stale statistics, predicates that prevent index matching, implicit casts, and cases where sequential scans are the cheaper choice.

### Source excerpt

An unused index is almost never a planner bug. It is usually a predicate the planner cannot match to the index, such as a function or an implicit cast applied to the column, or a cardinality estimate that is wrong because statistics are stale. When the estimate is right and the planner still refuses, it is often correct: past a few percent of the table, random access through an index costs more than reading the table sequentially. The diagnostic that matters is the gap between estimated and actual rows in EXPLAIN ANALYZE.

## How to Explain Tech Stuff to Non-Tech Colleagues

DevFeed: [How to Explain Tech Stuff to Non-Tech Colleagues](<https://devfeed.tech/articles/how-to-explain-tech-stuff-to-non-tech-colleagues-34681.md>)

Original publisher: [Read original article](<https://newsletter.systemdesigncodex.com/p/how-to-explain-tech-stuff-to-non>)

Author: Saurabh Dashora

Published: 2026-07-01T06:00:36Z

Content type: tutorial

Language: en

Sources: [System Design Codex](<https://devfeed.tech/sources/system-design-codex.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Learning](<https://devfeed.tech/topics/learning.md>)

Tags: [communication](<https://devfeed.tech/tags/communication.md>), [developers](<https://devfeed.tech/tags/developers.md>), [explain](<https://devfeed.tech/tags/explain.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [tips](<https://devfeed.tech/tags/tips.md>)

### AI overview

A tutorial on explaining technical ideas and programming concepts to non-technical colleagues. It introduces the Communication Iceberg and recommends analogies, plain language, visual aids, storytelling, big-picture framing, and encouraging questions.

### Source excerpt

Some tips

## Per-worker, and global, IO bandwidth in explain plans

DevFeed: [Per-worker, and global, IO bandwidth in explain plans](<https://devfeed.tech/articles/per-worker-and-global-io-bandwidth-in-explain-plans-33676.md>)

Original publisher: [Read original article](<https://www.depesz.com/2026/02/21/per-worker-and-global-io-bandwidth-in-explain-plans/>)

Author: depesz

Published: 2026-02-21T13:24:57Z

Content type: article

Language: en

Sources: [select \* from depesz;](<https://devfeed.tech/sources/select-from-depesz.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [IO](<https://devfeed.tech/topics/io.md>), [parallel](<https://devfeed.tech/topics/parallel.md>)

Tags: [analyze](<https://devfeed.tech/tags/analyze.md>), [execution](<https://devfeed.tech/tags/execution.md>), [explain](<https://devfeed.tech/tags/explain.md>), [explain-depesz-com](<https://devfeed.tech/tags/explain-depesz-com.md>), [io](<https://devfeed.tech/tags/io.md>), [parallel](<https://devfeed.tech/tags/parallel.md>), [plan](<https://devfeed.tech/tags/plan.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [speed](<https://devfeed.tech/tags/speed.md>), [timing](<https://devfeed.tech/tags/timing.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [worker](<https://devfeed.tech/tags/worker.md>)

### AI overview

This article explains how PostgreSQL explain plans can report per-worker and global I/O bandwidth during parallel execution. It describes how summed worker timings differ from wall-clock time and introduces an exclusive-time bandwidth figure for the disks' total workload.

### Source excerpt

Jeremy Schneider suggested a change to how plans are displayed - adding another bit of information in case we have timing information for IO for explain node. Took me a while to research, but it finally made it's way... Let's consider this simple plan. In it's Parallel Seq Scan node we see: -> Parallel Seq ... Continue reading "Per-worker, and global, IO bandwidth in explain plans"

## Slicing SVG 9 Ways

DevFeed: [Slicing SVG 9 Ways](<https://devfeed.tech/articles/slicing-svg-9-ways-39439.md>)

Original publisher: [Read original article](<https://aerotwist.com/blog/slicing-svg-9-ways>)

Author: Paul Lewis

Published: 2016-08-30T00:00:00Z

Content type: tutorial

Language: en

Sources: [Paul Lewis](<https://devfeed.tech/sources/paul-lewis.md>)

Topics: [SVG](<https://devfeed.tech/topics/svg.md>), [CSS](<https://devfeed.tech/topics/css.md>), [SVG animations in CSS](<https://devfeed.tech/topics/svg-animations-in-css.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [challenges](<https://devfeed.tech/tags/challenges.md>), [css](<https://devfeed.tech/tags/css.md>), [explain](<https://devfeed.tech/tags/explain.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [performance](<https://devfeed.tech/tags/performance.md>), [responsive](<https://devfeed.tech/tags/responsive.md>), [series](<https://devfeed.tech/tags/series.md>), [svg](<https://devfeed.tech/tags/svg.md>), [video](<https://devfeed.tech/tags/video.md>), [youtube](<https://devfeed.tech/tags/youtube.md>)

### AI overview

This tutorial explains how to approach dynamically sized shadows for a 3D card flip in responsive web design. It compares CSS box-shadow and blur filters, focusing on editability, animation performance, and rendering costs.

### Source excerpt

I recently made a 3D Card Flip element as part of my Supercharged YouTube video series, and I ran into some challenges with the shadows. I decided I should explain how I approached the solution.

## A Proofless Introduction to Information Theory

DevFeed: [A Proofless Introduction to Information Theory](<https://devfeed.tech/articles/a-proofless-introduction-to-information-theory-40377.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2015/02/16/a-proofless-introduction-to-information-theory/>)

Published: 2015-02-16T09:00:00Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Encoding](<https://devfeed.tech/topics/encoding.md>), [digital](<https://devfeed.tech/topics/digital.md>)

Tags: [channel](<https://devfeed.tech/tags/channel.md>), [coding-theory](<https://devfeed.tech/tags/coding-theory.md>), [communication](<https://devfeed.tech/tags/communication.md>), [compression](<https://devfeed.tech/tags/compression.md>), [digital](<https://devfeed.tech/tags/digital.md>), [encoding](<https://devfeed.tech/tags/encoding.md>), [entropy](<https://devfeed.tech/tags/entropy.md>), [error](<https://devfeed.tech/tags/error.md>), [error-correction](<https://devfeed.tech/tags/error-correction.md>), [example](<https://devfeed.tech/tags/example.md>), [explain](<https://devfeed.tech/tags/explain.md>), [hamming](<https://devfeed.tech/tags/hamming.md>), [independent](<https://devfeed.tech/tags/independent.md>), [information](<https://devfeed.tech/tags/information.md>), [information-theory](<https://devfeed.tech/tags/information-theory.md>), [kolmogorov-complexity](<https://devfeed.tech/tags/kolmogorov-complexity.md>), [language](<https://devfeed.tech/tags/language.md>), [markov](<https://devfeed.tech/tags/markov.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [messages](<https://devfeed.tech/tags/messages.md>), [models](<https://devfeed.tech/tags/models.md>), [probabilistic-method](<https://devfeed.tech/tags/probabilistic-method.md>), [problems](<https://devfeed.tech/tags/problems.md>), [shannon](<https://devfeed.tech/tags/shannon.md>), [theory](<https://devfeed.tech/tags/theory.md>)

### AI overview

A proofless introduction to information theory explains noiseless and noisy communication problems, encoding schemes, entropy, and how entropy differs from Kolmogorov complexity.

### Source excerpt

There are two basic problems in information theory that are very easy to explain. Two people, Alice and Bob, want to communicate over a digital channel over some long period of time, and they know the probability that certain messages will be sent ahead of time. For example, English language sentences are more likely than gibberish, and "Hi" is much more likely than "asphyxiation." The problems are: Say communication is very expensive.

## Django dynamic forms and formsets

DevFeed: [Django dynamic forms and formsets](<https://devfeed.tech/articles/django-dynamic-forms-and-formsets-35389.md>)

Original publisher: [Read original article](<https://darkcoding.net/software/django-dynamic-forms-and-formsets/>)

Author: Graham King

Published: 2009-06-16T01:08:23Z

Content type: article

Language: en

Sources: [Graham King](<https://devfeed.tech/sources/graham-king.md>)

Topics: [Django](<https://devfeed.tech/topics/django.md>), [Forms](<https://devfeed.tech/topics/forms.md>)

Tags: [advanced](<https://devfeed.tech/tags/advanced.md>), [django](<https://devfeed.tech/tags/django.md>), [explain](<https://devfeed.tech/tags/explain.md>), [forms](<https://devfeed.tech/tags/forms.md>), [python](<https://devfeed.tech/tags/python.md>), [software](<https://devfeed.tech/tags/software.md>)

### AI overview

The article recommends two posts that clearly explain Django dynamic forms and advanced formset usage.

### Source excerpt

A couple of great posts which explain Django dynamic forms and advanced formset usage very clearly: - James Bennett: So you want a dynamic form - Malcolm Tredinnick: Advanced Formset usage in Django