<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url><loc>https://dbdecoded.com/</loc></url>
  <url><loc>https://dbdecoded.com/about</loc></url>
  <url><loc>https://dbdecoded.com/blog</loc></url>
  <url><loc>https://dbdecoded.com/blog/two-ways-to-fix-a-read-write-race-in-postgres</loc><lastmod>2026-08-19</lastmod></url>
  <url><loc>https://dbdecoded.com/blog/what-problem-does-connection-pooling-solve-in-postgresql</loc><lastmod>2026-08-20</lastmod></url>
  <url><loc>https://dbdecoded.com/blog/tags/concurrency</loc></url>
  <url><loc>https://dbdecoded.com/blog/tags/postgresql</loc></url>
  <url><loc>https://dbdecoded.com/blog/tags/transactions</loc></url>
  <url><loc>https://dbdecoded.com/blog/tags/connection-pooling</loc></url>
  <url><loc>https://dbdecoded.com/lessons</loc></url>
  <url><loc>https://dbdecoded.com/lessons/primary-keys-and-foreign-keys</loc></url>
  <url><loc>https://dbdecoded.com/lessons/one-to-many-relationships</loc></url>
  <url><loc>https://dbdecoded.com/lessons/many-to-many-relationships-and-junction-tables</loc></url>
  <url><loc>https://dbdecoded.com/lessons/normalizing-a-database</loc></url>
  <url><loc>https://dbdecoded.com/lessons/when-denormalization-makes-sense</loc></url>
  <url><loc>https://dbdecoded.com/lessons/not-null-and-check-constraints</loc></url>
  <url><loc>https://dbdecoded.com/lessons/enforcing-uniqueness-with-unique</loc></url>
  <url><loc>https://dbdecoded.com/lessons/foreign-key-actions</loc></url>
  <url><loc>https://dbdecoded.com/lessons/understanding-null</loc></url>
  <url><loc>https://dbdecoded.com/lessons/working-with-null-in-queries</loc></url>
  <url><loc>https://dbdecoded.com/lessons/joining-related-tables-with-inner-join</loc></url>
  <url><loc>https://dbdecoded.com/lessons/keeping-unmatched-rows-with-left-join</loc></url>
  <url><loc>https://dbdecoded.com/lessons/filtering-joined-data-on-vs-where</loc></url>
  <url><loc>https://dbdecoded.com/lessons/joining-more-than-two-tables</loc></url>
  <url><loc>https://dbdecoded.com/lessons/right-full-and-cross-joins</loc></url>
  <url><loc>https://dbdecoded.com/lessons/how-postgresql-executes-joins</loc></url>
  <url><loc>https://dbdecoded.com/lessons/summarizing-rows-with-aggregate-functions</loc></url>
  <url><loc>https://dbdecoded.com/lessons/grouping-rows-with-group-by</loc></url>
  <url><loc>https://dbdecoded.com/lessons/filtering-groups-with-having</loc></url>
  <url><loc>https://dbdecoded.com/lessons/conditional-aggregation-with-filter-and-case</loc></url>
  <url><loc>https://dbdecoded.com/lessons/writing-queries-with-subqueries</loc></url>
  <url><loc>https://dbdecoded.com/lessons/checking-for-related-rows-with-exists-and-not-exists</loc></url>
  <url><loc>https://dbdecoded.com/lessons/writing-readable-queries-with-ctes</loc></url>
  <url><loc>https://dbdecoded.com/lessons/recursive-ctes</loc></url>
  <url><loc>https://dbdecoded.com/lessons/cte-materialization-and-query-performance</loc></url>
  <url><loc>https://dbdecoded.com/lessons/understanding-window-functions</loc></url>
  <url><loc>https://dbdecoded.com/lessons/ranking-rows-with-row-number-rank-and-dense-rank</loc></url>
  <url><loc>https://dbdecoded.com/lessons/running-totals-and-window-frames</loc></url>
  <url><loc>https://dbdecoded.com/lessons/comparing-rows-with-lag-and-lead</loc></url>
  <url><loc>https://dbdecoded.com/lessons/how-postgresql-executes-sql</loc></url>
  <url><loc>https://dbdecoded.com/lessons/understanding-postgresql-execution-plans</loc></url>
  <url><loc>https://dbdecoded.com/lessons/using-explain-analyze-to-measure-actual-execution</loc></url>
  <url><loc>https://dbdecoded.com/lessons/improving-query-performance-with-indexes</loc></url>
  <url><loc>https://dbdecoded.com/lessons/multicolumn-indexes</loc></url>
  <url><loc>https://dbdecoded.com/lessons/partial-indexes</loc></url>
  <url><loc>https://dbdecoded.com/lessons/expression-indexes</loc></url>
  <url><loc>https://dbdecoded.com/lessons/paginating-results-with-limit-and-offset</loc></url>
  <url><loc>https://dbdecoded.com/lessons/understanding-the-cost-of-large-offsets</loc></url>
  <url><loc>https://dbdecoded.com/lessons/introducing-keyset-pagination</loc></url>
  <url><loc>https://dbdecoded.com/lessons/keyset-pagination-with-multiple-sort-columns</loc></url>
  <url><loc>https://dbdecoded.com/lessons/navigating-forward-and-backward-with-cursors</loc></url>
  <url><loc>https://dbdecoded.com/lessons/choosing-between-offset-and-keyset-pagination</loc></url>
  <url><loc>https://dbdecoded.com/lessons/why-transactions-exist</loc></url>
  <url><loc>https://dbdecoded.com/lessons/using-begin-commit-and-rollback</loc></url>
  <url><loc>https://dbdecoded.com/lessons/understanding-mvcc</loc></url>
  <url><loc>https://dbdecoded.com/lessons/understanding-read-committed</loc></url>
  <url><loc>https://dbdecoded.com/lessons/preventing-race-conditions</loc></url>
  <url><loc>https://dbdecoded.com/lessons/using-repeatable-read-and-serializable</loc></url>
  <url><loc>https://dbdecoded.com/lessons/understanding-deadlocks</loc></url>
  <url><loc>https://dbdecoded.com/lessons/using-savepoints</loc></url>
  <url><loc>https://dbdecoded.com/forum</loc></url>
  <url><loc>https://dbdecoded.com/forum/primary-keys-and-foreign-keys</loc></url>
  <url><loc>https://dbdecoded.com/forum/one-to-many-relationships</loc></url>
  <url><loc>https://dbdecoded.com/forum/many-to-many-relationships-and-junction-tables</loc></url>
  <url><loc>https://dbdecoded.com/forum/normalizing-a-database</loc></url>
  <url><loc>https://dbdecoded.com/forum/when-denormalization-makes-sense</loc></url>
  <url><loc>https://dbdecoded.com/forum/not-null-and-check-constraints</loc></url>
  <url><loc>https://dbdecoded.com/forum/enforcing-uniqueness-with-unique</loc></url>
  <url><loc>https://dbdecoded.com/forum/foreign-key-actions</loc></url>
  <url><loc>https://dbdecoded.com/forum/understanding-null</loc></url>
  <url><loc>https://dbdecoded.com/forum/working-with-null-in-queries</loc></url>
  <url><loc>https://dbdecoded.com/forum/joining-related-tables-with-inner-join</loc></url>
  <url><loc>https://dbdecoded.com/forum/keeping-unmatched-rows-with-left-join</loc></url>
  <url><loc>https://dbdecoded.com/forum/filtering-joined-data-on-vs-where</loc></url>
  <url><loc>https://dbdecoded.com/forum/joining-more-than-two-tables</loc></url>
  <url><loc>https://dbdecoded.com/forum/right-full-and-cross-joins</loc></url>
  <url><loc>https://dbdecoded.com/forum/how-postgresql-executes-joins</loc></url>
  <url><loc>https://dbdecoded.com/forum/summarizing-rows-with-aggregate-functions</loc></url>
  <url><loc>https://dbdecoded.com/forum/grouping-rows-with-group-by</loc></url>
  <url><loc>https://dbdecoded.com/forum/filtering-groups-with-having</loc></url>
  <url><loc>https://dbdecoded.com/forum/conditional-aggregation-with-filter-and-case</loc></url>
  <url><loc>https://dbdecoded.com/forum/writing-queries-with-subqueries</loc></url>
  <url><loc>https://dbdecoded.com/forum/checking-for-related-rows-with-exists-and-not-exists</loc></url>
  <url><loc>https://dbdecoded.com/forum/writing-readable-queries-with-ctes</loc></url>
  <url><loc>https://dbdecoded.com/forum/recursive-ctes</loc></url>
  <url><loc>https://dbdecoded.com/forum/cte-materialization-and-query-performance</loc></url>
  <url><loc>https://dbdecoded.com/forum/understanding-window-functions</loc></url>
  <url><loc>https://dbdecoded.com/forum/ranking-rows-with-row-number-rank-and-dense-rank</loc></url>
  <url><loc>https://dbdecoded.com/forum/running-totals-and-window-frames</loc></url>
  <url><loc>https://dbdecoded.com/forum/comparing-rows-with-lag-and-lead</loc></url>
  <url><loc>https://dbdecoded.com/forum/how-postgresql-executes-sql</loc></url>
  <url><loc>https://dbdecoded.com/forum/understanding-postgresql-execution-plans</loc></url>
  <url><loc>https://dbdecoded.com/forum/using-explain-analyze-to-measure-actual-execution</loc></url>
  <url><loc>https://dbdecoded.com/forum/improving-query-performance-with-indexes</loc></url>
  <url><loc>https://dbdecoded.com/forum/multicolumn-indexes</loc></url>
  <url><loc>https://dbdecoded.com/forum/partial-indexes</loc></url>
  <url><loc>https://dbdecoded.com/forum/expression-indexes</loc></url>
  <url><loc>https://dbdecoded.com/forum/paginating-results-with-limit-and-offset</loc></url>
  <url><loc>https://dbdecoded.com/forum/understanding-the-cost-of-large-offsets</loc></url>
  <url><loc>https://dbdecoded.com/forum/introducing-keyset-pagination</loc></url>
  <url><loc>https://dbdecoded.com/forum/keyset-pagination-with-multiple-sort-columns</loc></url>
  <url><loc>https://dbdecoded.com/forum/navigating-forward-and-backward-with-cursors</loc></url>
  <url><loc>https://dbdecoded.com/forum/choosing-between-offset-and-keyset-pagination</loc></url>
  <url><loc>https://dbdecoded.com/forum/why-transactions-exist</loc></url>
  <url><loc>https://dbdecoded.com/forum/using-begin-commit-and-rollback</loc></url>
  <url><loc>https://dbdecoded.com/forum/understanding-mvcc</loc></url>
  <url><loc>https://dbdecoded.com/forum/understanding-read-committed</loc></url>
  <url><loc>https://dbdecoded.com/forum/preventing-race-conditions</loc></url>
  <url><loc>https://dbdecoded.com/forum/using-repeatable-read-and-serializable</loc></url>
  <url><loc>https://dbdecoded.com/forum/understanding-deadlocks</loc></url>
  <url><loc>https://dbdecoded.com/forum/using-savepoints</loc></url>
</urlset>
