# JOIN

JOIN is a SQL operation that combines rows from tables according to a condition specifying which rows are paired.

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

## pg\_plan\_advice: Plan Stability and User Planner Control for PostgreSQL?

DevFeed: [pg\_plan\_advice: Plan Stability and User Planner Control for PostgreSQL?](<https://devfeed.tech/articles/pg-plan-advice-plan-stability-and-user-planner-control-for-postgresql-33636.md>)

Original publisher: [Read original article](<https://rhaas.blogspot.com/2026/03/pgplanadvice-plan-stability-and-user.html>)

Author: Robert Haas (noreply@blogger.com)

Published: 2026-03-04T17:55:00Z

Content type: opinion

Language: en

Sources: [Robert Haas](<https://devfeed.tech/sources/robert-haas.md>)

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

Tags: [join](<https://devfeed.tech/tags/join.md>), [modules](<https://devfeed.tech/tags/modules.md>), [plan](<https://devfeed.tech/tags/plan.md>), [planner](<https://devfeed.tech/tags/planner.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [query](<https://devfeed.tech/tags/query.md>), [test](<https://devfeed.tech/tags/test.md>)

### AI overview

The article presents a proposed PostgreSQL 19 patch set introducing the pg_plan_advice, pg_collect_advice, and pg_stash_advice contrib modules. It demonstrates how pg_plan_advice can generate plan advice strings, preserve selected planner decisions, or vary advice to produce a different join plan.

### Source excerpt

I'm proposing a very ambitious patch set for PostgreSQL 19. Only time will tell whether it ends up in the release, but I can't resist using this space to give you a short demonstration of what it can do. The patch set introduces three new contrib modules, currently called pg_plan_advice, pg_collect_advice, and pg_stash_advice. Read more "

## Small improvement for pretty-printing in paste.depesz.com

DevFeed: [Small improvement for pretty-printing in paste.depesz.com](<https://devfeed.tech/articles/small-improvement-for-pretty-printing-in-paste-depesz-com-33672.md>)

Original publisher: [Read original article](<https://www.depesz.com/2026/01/06/improvement-for-pretty-printing-in-paste-depesz-com/>)

Author: depesz

Published: 2026-01-06T15:13:10Z

Content type: release

Language: en

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

Topics: [pretty printing](<https://devfeed.tech/topics/pretty-printing.md>), [JOIN](<https://devfeed.tech/topics/join.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Script](<https://devfeed.tech/topics/script.md>)

Tags: [announce](<https://devfeed.tech/tags/announce.md>), [announcements](<https://devfeed.tech/tags/announcements.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [irc](<https://devfeed.tech/tags/irc.md>), [join](<https://devfeed.tech/tags/join.md>), [paste-depesz-com](<https://devfeed.tech/tags/paste-depesz-com.md>), [perl](<https://devfeed.tech/tags/perl.md>), [pg-prettify](<https://devfeed.tech/tags/pg-prettify.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [pretty](<https://devfeed.tech/tags/pretty.md>), [pretty-printing](<https://devfeed.tech/tags/pretty-printing.md>), [script](<https://devfeed.tech/tags/script.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>)

### AI overview

The article describes an improvement to the pretty printer on paste.depesz.com that produces better indentation for complex SQL join conditions. It also notes that the printer can be used from the command line or through a previously described script without storing content on the site.

### Source excerpt

As you maybe know, some time ago I made paste service, mostly to use for queries, or related text to share on IRC. One part of it is that it also has pretty printer of provided queries. Recently I realized that in case of complex join conditions, the output is, well, sub-optimal. For example: SELECT ... Continue reading "Small improvement for pretty-printing in paste.depesz.com"

## Keycloak Conference Videos and FOSDEM 2025 Announcement

DevFeed: [Keycloak Conference Videos and FOSDEM 2025 Announcement](<https://devfeed.tech/articles/videos-for-the-holidays-and-meet-us-at-fosdem-31675.md>)

Original publisher: [Read original article](<https://www.keycloak.org/2024/12/keycloak-at-froscon-2024>)

Author: Alexander Schwartz

Published: 2024-12-12T00:00:00Z

Content type: article

Language: en

Sources: [Keycloak Blog](<https://devfeed.tech/sources/keycloak-blog.md>)

Topics: [Keycloak](<https://devfeed.tech/topics/keycloak.md>), [IAM](<https://devfeed.tech/topics/iam.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [JOIN](<https://devfeed.tech/topics/join.md>)

Tags: [conference](<https://devfeed.tech/tags/conference.md>), [events](<https://devfeed.tech/tags/events.md>), [iam](<https://devfeed.tech/tags/iam.md>), [idm](<https://devfeed.tech/tags/idm.md>), [kerberos](<https://devfeed.tech/tags/kerberos.md>), [keycloak](<https://devfeed.tech/tags/keycloak.md>), [ldap](<https://devfeed.tech/tags/ldap.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [openid-connect](<https://devfeed.tech/tags/openid-connect.md>), [saml](<https://devfeed.tech/tags/saml.md>), [sso](<https://devfeed.tech/tags/sso.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

The Keycloak project shares conference videos from events including FOSDEM, FrOSCon, KubeCon NA, KeyConf, Keycloak DevDay, and Devoxx France. The post also announces the project's planned presence at FOSDEM 2025 in Brussels and mentions an upcoming sold-out Keycloak DevDay.

### Source excerpt

Videos to re-watch This year, the Keycloak project was present at multiple conferences. Here are the videos to watch for the holiday break if you haven't watched them yet: KubeCon NA, KeyConf, Keycloak DevDay, Devoxx France and KubeCon Europe. When going through the list, I found that at least two of the talks have not been published on the Keycloak blog yet. So here they are: FOSDEM in February with the talk Add user self-management, brokerage and federation to your infrastructure with Keycloak, FrOSCon in August with What's new in Keycloak, the open source IAM. Did we miss another video that we should have shared here? Let me know! We are excited to connect with the community All conferences were exciting for us: We met with the community to share the latest developments of Keycloak, engaged in discussions and heard interesting stories from people running Keycloak in their production environments. The FrOSCon and the KubeCon conferences were special as we had our own stand where we connected to both new and existing users of Keycloak. At FrOSCon, we had our own signage up as this photo proves! If you have not met us at a conference yet, please take this online Keycloak Survey: Let us know if you want to share your story with the broader community, and we will be in contact with you about the next steps. Meet us next at FOSDEM! The good news is that we will back at FOSDEM 2025 in Brussels in February this year. In the meantime, save the date to either join us in Brussels or live on the stream. If you want to connect on-site, reach out to me using your preferred channel. Some of our team members will also be at the Keycloak DevDay in March, which is unfortunately already sold out. We are already planning for other upcoming events in 2025, so return to this blog to read the latest news here!

## KeyConf24 program announced & livestream

DevFeed: [KeyConf24 program announced & livestream](<https://devfeed.tech/articles/keyconf24-program-announced-livestream-31653.md>)

Original publisher: [Read original article](<https://www.keycloak.org/2024/08/keyconf24-program-published>)

Author: Alexander Schwartz

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

Content type: news

Language: en

Sources: [Keycloak Blog](<https://devfeed.tech/sources/keycloak-blog.md>)

Topics: [Keycloak](<https://devfeed.tech/topics/keycloak.md>), [JOIN](<https://devfeed.tech/topics/join.md>)

Tags: [event](<https://devfeed.tech/tags/event.md>), [identity-management](<https://devfeed.tech/tags/identity-management.md>), [idm](<https://devfeed.tech/tags/idm.md>), [integrations](<https://devfeed.tech/tags/integrations.md>), [kerberos](<https://devfeed.tech/tags/kerberos.md>), [keycloak](<https://devfeed.tech/tags/keycloak.md>), [ldap](<https://devfeed.tech/tags/ldap.md>), [livestream](<https://devfeed.tech/tags/livestream.md>), [openid-connect](<https://devfeed.tech/tags/openid-connect.md>), [saml](<https://devfeed.tech/tags/saml.md>), [sso](<https://devfeed.tech/tags/sso.md>), [technical](<https://devfeed.tech/tags/technical.md>)

### AI overview

KeyConf24, the 2024 Keycloak Identity Summit, will take place on September 19, 2024, with its program available online. Due to high demand and limited on-site capacity, the event will offer a livestream for remote attendees. Topics include the European Digital Identity Wallet, verifiable credentials, Keycloak integrations, and new and upcoming Keycloak features.

### Source excerpt

KeyConf24, our 2024 Keycloak Identity Summit, will happen on September 19th, which is just around the corner! This year's event promises to be even bigger and better, with a program packed full of relevant, cutting-edge topics. This year due to high demand and limited space on-site, we're offering for the first time a live stream, so the Keycloak community can join remotely. What to Expect at KeyConf24 The talks have been selected, and the program is now online at https://keyconf.dev/. Expect talks about: European Digital Identity Wallet: Deep dives into the European Union's ambitious initiative and its impact on identity management. Verifiable Credentials: Explore the exciting potential of decentralized identity verification and the role of Keycloak. Real-world Keycloak integrations: Technical sessions on Keycloak's capabilities and how to leverage them in real world scenarios like the banking industry. New and upcoming features in Keycloak: Hear about the new organisations and user profile features which are available in the latest releases of Keycloak, as well as the next upcoming features. Save the Date and join us in the live stream! You can register for the live stream at https://keyconf.dev/. We're excited and are looking forward to meeting you at our event. Let's continue to shape the future of identity together!

## Preparing for a Tech Talk, Part 1: Motivation

DevFeed: [Preparing for a Tech Talk, Part 1: Motivation](<https://devfeed.tech/articles/preparing-for-a-tech-talk-part-1-motivation-36187.md>)

Original publisher: [Read original article](<https://overreacted.io/preparing-for-tech-talk-part-1-motivation/>)

Published: 2018-12-26T00:00:00Z

Content type: opinion

Language: en

Sources: [Dan Abramov](<https://devfeed.tech/sources/dan-abramov.md>)

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

Tags: [motivation](<https://devfeed.tech/tags/motivation.md>), [presentation](<https://devfeed.tech/tags/presentation.md>), [speaker](<https://devfeed.tech/tags/speaker.md>), [tips](<https://devfeed.tech/tags/tips.md>)

### AI overview

The first article in a series about preparing for a tech talk explains how the author chooses a topic. It distinguishes external motivations, such as recognition or career benefits, from internal motivations, such as teaching, learning, or influencing a conversation, and encourages speakers to understand their own reasons.

### Source excerpt

Here's my recipe for a good talk idea.

## PostgreSQL Data Types

DevFeed: [PostgreSQL Data Types](<https://devfeed.tech/articles/postgresql-data-types-34598.md>)

Original publisher: [Read original article](<https://tapoueh.org/blog/2018/05/postgresql-data-types/>)

Author: Dimitri Fontaine PostgreSQL Major Contributor; Author

Published: 2018-05-24T12:47:05Z

Content type: article

Language: en

Sources: [Dimitri Fontaine](<https://devfeed.tech/sources/dimitri-fontaine.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [data type](<https://devfeed.tech/topics/data-type.md>), [JOIN](<https://devfeed.tech/topics/join.md>), [Query (disambiguation)](<https://devfeed.tech/topics/query.md>), [Regular expression](<https://devfeed.tech/topics/regular-expression.md>)

Tags: [data-type](<https://devfeed.tech/tags/data-type.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [join](<https://devfeed.tech/tags/join.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [query](<https://devfeed.tech/tags/query.md>), [regexp](<https://devfeed.tech/tags/regexp.md>), [reporting](<https://devfeed.tech/tags/reporting.md>)

### AI overview

A recap of a series on PostgreSQL data types, covering how types provide input validation, expected behaviors, and processing functions. It reviews examples involving booleans, text encoding and processing, date and time values, and network address types.

### Source excerpt

Today it's time to conclude our series of PostgreSQL Data Types articles with a recap. The series cover lots of core PostgreSQL data types and shows how to benefit from the PostgreSQL concept of a data type: more than input validation, a PostgreSQL data type also implements expected behaviors and processing functions. This allows an application developer to rely on PostgreSQL for more complex queries, having the processing happen where the data is, for instance when implementing advanced JOIN operations, then retrieving only the data set that is interesting for the application.

## All You Need To Know About Prefetching in Django

DevFeed: [All You Need To Know About Prefetching in Django](<https://devfeed.tech/articles/all-you-need-to-know-about-prefetching-in-django-33888.md>)

Original publisher: [Read original article](<https://hakibenita.com/all-you-need-to-know-about-prefetching-in-django>)

Author: Haki Benita

Published: 2017-04-28T21:00:00Z

Content type: tutorial

Language: en

Sources: [Haki Benita](<https://devfeed.tech/sources/haki-benita.md>)

Topics: [Django](<https://devfeed.tech/topics/django.md>), [Query (disambiguation)](<https://devfeed.tech/topics/query.md>), [JOIN](<https://devfeed.tech/topics/join.md>)

Tags: [articles](<https://devfeed.tech/tags/articles.md>), [django](<https://devfeed.tech/tags/django.md>), [join](<https://devfeed.tech/tags/join.md>), [many-to-many](<https://devfeed.tech/tags/many-to-many.md>), [models](<https://devfeed.tech/tags/models.md>), [orm](<https://devfeed.tech/tags/orm.md>), [performance](<https://devfeed.tech/tags/performance.md>), [query](<https://devfeed.tech/tags/query.md>)

### AI overview

A tutorial on using Django prefetching to reduce database queries when retrieving related data, especially across many-to-many relationships. It explains the N+1 query problem, compares joins with prefetching, and describes how prefetched results are cached on objects.

### Source excerpt

A rundown of all the ways you can use Prefetch to speed up queries in Django.

## A look at Foreign Data Wrappers

DevFeed: [A look at Foreign Data Wrappers](<https://devfeed.tech/articles/a-look-at-foreign-data-wrappers-41148.md>)

Original publisher: [Read original article](<https://www.craigkerstiens.com/2013/08/05/A-look-at-Foreign-Data-Wrappers/>)

Author: Map

Published: 2013-08-05T20:55:56Z

Content type: tutorial

Language: en

Sources: [Craig Kerstiens](<https://devfeed.tech/sources/craig-kerstiens.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Heroku Postgres](<https://devfeed.tech/topics/heroku-postgres.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [JOIN](<https://devfeed.tech/topics/join.md>)

Tags: [heroku-postgres](<https://devfeed.tech/tags/heroku-postgres.md>), [join](<https://devfeed.tech/tags/join.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

A tutorial on PostgreSQL foreign data wrappers (FDWs), including how to enable postgres_fdw on PostgreSQL 9.3, configure a remote server and user mapping, define foreign tables, and query data across databases.

### Source excerpt

There are two particular sets of features that continue to keep me very excited about the momentum of Postgres. And while PostgreSQL has had some great momentum in the past few years these features may give it an entirely new pace all together. One is extensions, which is really its own category. Dimitri Fontaine was talking about doing a full series just on extensions, so here's hoping he does so I dont have to :) One subset of extensions which I consider entirely separate is the other thing, which is foreign data wrappers or FDWs. FDWs allow you to connect to other data sources from within Postgres. From there you can query them with SQL, join across disparate data sets, or join across different systems. Recently I had a good excuse to give the postgres_fdw a try. And while I've blogged about the Redis FDW previously, the Postgres one is particularly exciting because with PostgreSQL 9.3 it will ship as a contrib module, which means all Postgres installers should have it... you just have to turn it on. Let's take a look at getting it setup and then dig into it a bit. First, because I don't have Postgres 9.3 sitting around on my system I'm going to provision one from Heroku Postgres: $ heroku addons:add heroku-postgresql:crane --version 9.3 Once it becomes available I'm going to connect to it then enable the extension: $ heroku pg:psql BLACK -acraig # CREATE EXTENSION postgres_fdw; Now its there, so we can actually start using it. To use the FDW there's four basic things you'll want to do: Create the remote server Create a user mapping for the remote server Create your foreign tables Start querying some things The setup You'll only need to do each of the following once, once you're server, user and foreign table are all setup you can simply query away. This is a nice advantage over db_link which only exists for the set session. One downside I did find was that you can't use a full Postgres connection string, which would make setting it up much simpler. So onto setting

## My SQL Bad Habits

DevFeed: [My SQL Bad Habits](<https://devfeed.tech/articles/my-sql-bad-habits-41139.md>)

Original publisher: [Read original article](<https://www.craigkerstiens.com/2013/05/26/My-SQL-Bad-Habits/>)

Author: Map

Published: 2013-05-26T20:55:56Z

Content type: opinion

Language: en

Sources: [Craig Kerstiens](<https://devfeed.tech/sources/craig-kerstiens.md>)

Topics: [SQL](<https://devfeed.tech/topics/sql.md>), [syntax](<https://devfeed.tech/topics/syntax.md>), [JOIN](<https://devfeed.tech/topics/join.md>), [ordering](<https://devfeed.tech/topics/ordering.md>)

Tags: [implicit-joins](<https://devfeed.tech/tags/implicit-joins.md>), [ordering](<https://devfeed.tech/tags/ordering.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [query](<https://devfeed.tech/tags/query.md>), [sql](<https://devfeed.tech/tags/sql.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [tables](<https://devfeed.tech/tags/tables.md>)

### AI overview

The author discusses personal SQL bad habits that can make queries less clear or more error-prone. The article covers ordering or grouping by column numbers, implicit joins, insufficient comments, and manually generated lists used for filtering.

### Source excerpt

I'm reasonably proficient at SQL - a coworker when pseudocoding some logic for him pointed out that my pseudocode is what he thought was executable SQL. I'm fully capable of writing clear and readable SQL - which most SQL is not. Despite that I still have several bad habits when it comes to SQL. Without further adieu heres some of my dirty laundry so hopefully others can not make the same mistakes. Order/Group by Column Numbers When quickly iterating on a query its a lot less typing to put the column number as the thing you want to order by. Here's a quick lightweight example: SELECT email, created_at FROM users ORDER BY 2 DESC LIMIT 5; This gives me my last 5 users that have signed up for my site. Of course as soon as I have this I may want to add some data to it, like their first name so I can send them a welcome email. I quickly alter the query to: SELECT email, first_name, created_at FROM users ORDER BY 2 DESC LIMIT 5; And now I have 5 users that have signed up ordered by their first name. Sure its obvious when you have 1 column you're ordering by, but when you have GROUP BY 1, 2, 3, 4, 5, 6 which is actually open in one of my tabs currently its a bit more confusing.... Though if you really want to have some fun, share a query with someone that looks something like this: SELECT email as "3", first_name "2", created_at "1" FROM users ORDER BY "1", "3" DESC LIMIT 5; Implicit Joins I seldom use the syntax INNER JOIN. Instead I simply put the two tables in my where clause and ensure I have a where condition. The problem with ensuring I have a where condition is sometimes I don't, especially when you're dealing with 3 tables. SELECT email, product.name, product.price FROM users, orders, items WHERE users.id = orders.user_id AND orders.id = items.order_id Is less clear (especially when dealing with 5-6 tables) than the alternative: SELECT email, product.name, product.price FROM users INNER JOIN orders on users.id = orders.user_id INNER JOIN items on orders.id = items.or

## Batch Update

DevFeed: [Batch Update](<https://devfeed.tech/articles/batch-update-34497.md>)

Original publisher: [Read original article](<https://tapoueh.org/blog/2013/03/batch-update/>)

Author: Dimitri Fontaine PostgreSQL Major Contributor; Author

Published: 2013-03-15T09:47:00Z

Content type: tutorial

Language: en

Sources: [Dimitri Fontaine](<https://devfeed.tech/sources/dimitri-fontaine.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [JOIN](<https://devfeed.tech/topics/join.md>)

Tags: [anti-join](<https://devfeed.tech/tags/anti-join.md>), [batch](<https://devfeed.tech/tags/batch.md>), [performance](<https://devfeed.tech/tags/performance.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [query](<https://devfeed.tech/tags/query.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

This tutorial explains how to perform efficient batch updates in PostgreSQL. It recommends updating many rows in a single SQL statement, loading application-held data into a temporary table with the COPY protocol, and using joins to update existing rows and insert new ones.

### Source excerpt

Performance consulting involves some tricks that you have to teach over and over again. One of them is that SQL tends to be so much better at dealing with plenty of rows in a single statement when compared to running as many statements, each one against a single row.